改善MySQL性能问题
2010-11-23 09:08
344 查看
在使用M主SQL开发中,总结出 改善MySQL性能的两个方面:
1.增加 tmp_table_size 值。mysql 的配置文件中,tmp_table_size 的默认大小是 32M。
如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,
如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。
例如:
my.ini
[mysqld]
tmp_table_size=300M
2.对 WHERE, JOIN2, MAX(), MIN(), ORDER BY 等子句中的条件判断中用到的字段,应该根据其建立
索引 INDEX。
索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读
完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到
达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000行,这比顺序读取至少快
100倍。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。
快速找出匹配一个WHERE子句的行 当执行联结(JOIN)时,从其他表检索行。
对特定的索引列找出MAX()或MIN()值如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY
key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列
是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。
1.增加 tmp_table_size 值。mysql 的配置文件中,tmp_table_size 的默认大小是 32M。
如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,
如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。
例如:
my.ini
[mysqld]
tmp_table_size=300M
2.对 WHERE, JOIN2, MAX(), MIN(), ORDER BY 等子句中的条件判断中用到的字段,应该根据其建立
索引 INDEX。
索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读
完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到
达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000行,这比顺序读取至少快
100倍。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。
快速找出匹配一个WHERE子句的行 当执行联结(JOIN)时,从其他表检索行。
对特定的索引列找出MAX()或MIN()值如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY
key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列
是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。
相关文章推荐
- MySQL中的视图及性能问题
- MySql 的统计查询性能问题
- mysql性能优化问题定位-待解决
- MySQL Insert语句单个批次数量过多导致的CPU性能问题分析
- 用pt-stalk定位MySQL短暂的性能问题
- MySQL 删除大表的性能问题解决方案
- [Mysql] Count(*)性能问题
- 记一次MongoDB性能问题(从MySQL迁移到MongoDB)
- MySQL之Limit分页性能问题
- 解决Java/MySQL性能问题的思路
- MySQL中的视图及性能问题
- mysql的limit性能,数据库索引问题,dblog问题
- linux下查找字符串&mysql-为magento性能测试修改innodb的innodb_buffer_pool_size而引发的问题
- MySql语句性能问题定位--从sql语句到磁盘IO检查
- Carte+kettle+mysql性能问题定位分析记录
- mysql 性能问题
- MySQL使用rand获取随机记录的性能优化问题
- mysql通过将or改成union来优化sql性能问题一例
- 关于,在Mysql中,外键是否会影响性能的问题???
- Web性能测试问题,mysql分析之一