灌溉梦想,记录脚步
« »
2010年1月22日技术合集

MySQL优化建议

1. key_buffer_size(VARIABLES)是针对Key_reads(STATUS)太大(Key_reads/Key_read_requests比率要尽量小,一般在1/1000以下);table_cache(VARIABLES)是针对Opened_tables(STATUS)太大,Opened_tables太大说明很多打开表的操作(访问一个表时,mysql将先打开这个表)必须在关闭其它表的状态下进行,所以必须增大table_cache的值

2. thread_created(STATUS)值比较大,而max_connections(VARIABLES)为300及max_used_connections(STATUS)不到300,可以考虑将thread_cache_size设为300,目的就是为了使thread_created/Connections比值尽量小!即增加thread的重用性!(手册上讲的很详细)

3. 为使Created_tmp_disk_tables(STATUS)尽量变为0,可以再适当增加tmp_table_size,这是为了尽量使临时表在内存中操作!同时也可以考虑增大max_tmp_tables(VARIABLES)的值!

4. Handler_read_rnd(STATUS)以及Handler_read_rnd_next(STATUS)很大,表明使用很多需要遍历表的查询或者没有很好的使用索引!解决这个问题需要优化你的SQL语句!同样,Slow_queries很大也表明了类似的问题!(Slow_queries是指超过long_query_time(VARIABLES)设定的秒数的SQL语句执行数量)

5. Key_blocks(STATUS)相对太小,说明关键缓存使用率很低,这也说明了Key_buffer_size太小!

6. Sort_scan(STATUS)比较大,说明使用了比较多的表扫描排序,也即没有很好的使用索引(后面的判断是个人所见,呵呵)

7. Talbe_locks_waited很大,说明有很多表锁定操作没有立即执行,这也需要通过优化表结构和SQL语句来避免,当然,在应用层也可以考虑更有效的使用表锁定(锁表与解锁之间的操作尽量不要有耗时的SQL操作)

日志信息 »

该日志于2010-01-22 01:17由 kevin 发表在技术合集分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

发表回复