拨乱反正:MyISAM中key_buffer_size的设置
2010-12-28 13:52
411 查看
作者:老王
一直以来,多数人在使用MyISAM时都是按照增大Key_read_requests / Key_reads的原则来设置key_buffer_size的,没想到这竟然是错误的!这次给大家醍醐灌顶的仍然是MySQL Performance Blog,详细描述参考:Why you should ignore MySQL’s key cache hit ratio。
Key_read_requests和Key_reads就是两个计数器,它们的含义如下:
Key_read_requests:从缓存读取索引的请求次数。
Key_reads:从磁盘读取索引的请求次数。
通常人们认为Key_read_requests / Key_reads越大越好,否则就应该增大key_buffer_size的设置,但通过计数器的比例来调优有两个问题:
问题一:比例并不显示数量的绝对值大小
问题二:计数器并没有考虑时间因素
虽说Key_read_requests大比小好,但是对于系统调优而言,更有意义的应该是单位时间内的Key_reads:
Key_reads / Uptime
你可以通过命令行得到一个实时的数据结果,比如:
# mysqladmin ext -ri10 | grep Key_reads
| Key_reads | 83777189 |
| Key_reads | 211 |
| Key_reads | 177 |
| Key_reads | 202 |
提示:命令里的mysqladmin ext其实就是mysqladmin extended-status,你甚至可以简写成mysqladmin e。
其中第一行表示的是汇总数值,所以这里不必考虑,下面的每行数值都表示10秒内的数据变化,从这份数据可以看出每10秒系统大约会出现200次Key_reads访问,折合到每1秒就是20次左右,至于这个数值到底合理与否,就由服务器的磁盘能力而定了。
顺便说一句,为啥数据按10秒取样,而不是直接按1秒取样?这里看看按1秒的结果:
# mysqladmin ext -ri1 | grep Key_reads
| Key_reads | 83776743 |
| Key_reads | 7 |
| Key_reads | 7 |
| Key_reads | 38 |
可以看到,由于时间段过小,数据变化比较剧烈,不容易直观估计大小,所以通常数据按照10秒或者60秒之类的时间段来取样是更好的。
忘记:Key_read_requests / Key_reads
牢记:Key_reads / Uptime
来源:http://hi.baidu.com/thinkinginlamp/blog/item/53592838e60b3e2fb8998ffd.html
mysql
一直以来,多数人在使用MyISAM时都是按照增大Key_read_requests / Key_reads的原则来设置key_buffer_size的,没想到这竟然是错误的!这次给大家醍醐灌顶的仍然是MySQL Performance Blog,详细描述参考:Why you should ignore MySQL’s key cache hit ratio。
Key_read_requests和Key_reads就是两个计数器,它们的含义如下:
Key_read_requests:从缓存读取索引的请求次数。
Key_reads:从磁盘读取索引的请求次数。
通常人们认为Key_read_requests / Key_reads越大越好,否则就应该增大key_buffer_size的设置,但通过计数器的比例来调优有两个问题:
问题一:比例并不显示数量的绝对值大小
问题二:计数器并没有考虑时间因素
虽说Key_read_requests大比小好,但是对于系统调优而言,更有意义的应该是单位时间内的Key_reads:
Key_reads / Uptime
你可以通过命令行得到一个实时的数据结果,比如:
# mysqladmin ext -ri10 | grep Key_reads
| Key_reads | 83777189 |
| Key_reads | 211 |
| Key_reads | 177 |
| Key_reads | 202 |
提示:命令里的mysqladmin ext其实就是mysqladmin extended-status,你甚至可以简写成mysqladmin e。
其中第一行表示的是汇总数值,所以这里不必考虑,下面的每行数值都表示10秒内的数据变化,从这份数据可以看出每10秒系统大约会出现200次Key_reads访问,折合到每1秒就是20次左右,至于这个数值到底合理与否,就由服务器的磁盘能力而定了。
顺便说一句,为啥数据按10秒取样,而不是直接按1秒取样?这里看看按1秒的结果:
# mysqladmin ext -ri1 | grep Key_reads
| Key_reads | 83776743 |
| Key_reads | 7 |
| Key_reads | 7 |
| Key_reads | 38 |
可以看到,由于时间段过小,数据变化比较剧烈,不容易直观估计大小,所以通常数据按照10秒或者60秒之类的时间段来取样是更好的。
忘记:Key_read_requests / Key_reads
牢记:Key_reads / Uptime
来源:http://hi.baidu.com/thinkinginlamp/blog/item/53592838e60b3e2fb8998ffd.html
mysql
相关文章推荐
- 拨乱反正:MyISAM中key_buffer_size的设置
- innodb的innodb_buffer_pool_size和MyISAM的key_buffer_size
- MyISAM中key_buffer_size
- mysql 优化技巧心得一(key_buffer_size设置).
- key_buffer_size设置注意事项
- innodb的innodb_buffer_pool_size和MyISAM的key_buffer_size
- 优化mysql之key_buffer_size设置
- innodb的innodb_buffer_pool_size和MyISAM的key_buffer_size(转自:http://www.java123.net/898181.html)
- MyISAM的key_buffer_size和InnoDB的innodb_buffer_pool_size
- mysql中key_buffer_size,query_cache_size,table_cache的合理设置
- 优化mysql之key_buffer_size设置
- mysql5.6之key_buffer_size优化设置
- mysql优化的重要参数  key_buffer_size  table_cache
- key_buffer_size 参数
- 设置和获取socket buffer size
- key_buffer_size
- 优化mysql之key_buffer_size
- MySQL优化经验 key_buffer_size,query_cache_size,table_cache
- MySQL优化经验 key_buffer_size,query_cache_size,ta
- MySQL优化经验 key_buffer_size,query_cache_size,table_cache