key_buffer_size:索引缓存大小
这个参数用来设置整个mysql中常规key cache大小。
如果mysql运行在32位平台上,此值建议不要超过2GB;如果是运行在64为平台上,此值不建议超过4GB。
key_buffer_size值的合理设置需要通过三个指标来计算
1、系统所有的总大小,公式如下:
key_size=key_number*(key_length+4)/0.67
2、系统可用物理内存,公式如下:
max_key_buffer_size<max_ram-qcache_usage-thread_usage_system_usage
3、系统当前key cache命中率,公式如下:
threads_usage=max_connections*(sort_buffer_size+join_buffer_size+read_buffer_size+read_rnd_buffer_size+thread_stack)
备注
考虑到活跃数据的问题,我们并不需要将key_buffer_size设置到可以将所有索引都放下的大小,这时候我们就需要key cache的命中率来帮忙了。
=====================================================================
key_buffer_block_size:索引缓存中的cache block size
这个参数用来设置每个cache block的大小,实际上也同时限定了我们将.MYI文件中的index block被读入时候的File Block的大小。
=====================================================================
key_cache_division_limit:LRU链表中的Hot Area和Warm Area分界值
在mysql中的key cache中所使用的LRU算法并不像传统的算法一样,仅仅只是通过访问频率以及最后访问时间来通过一个唯一的链表实现,而是将其分为两部分。
一部分用来存放使用比较频繁的Hot Cache Block(Hot Chain),被称为Hot Area。
一部分用来存放使用不是太频繁的Warm Cache Block(Warm Chain),被称为Warm Area。
这样做的主要目的是为了保护使用比较频繁的Cache Block不容易被换出。
而key_cache_division_limit参数则是告诉Mysql该如何将整个Cache Chain划Hot Chain和Warm Chain两部分。
参数值为Warm Chain占整个Chain的百分比。设置范围1-100,系统默认为100,也就是只有Warm Chain。
=====================================================================
key_cache_age_threshold:控制Cache Block从Hot area降到Warm Area的限制
系统默认值=300,最小可以设置为100。值越小,被降级的可能性越大。
=====================================================================
与Cache相关的性能状态参数
Key_blocks_not_flushed:已经更改但还未刷新到磁盘的Dirty Cache Block
Key_blocks_unused:目前未被使用的cache block数目
Key_blocks_used:目前被使用的cache block数目
Key_reads_requests:cache block被请求修改的总次数
Key_reads:在cache block中找不到需要读取的索引,到.MYI文件中读取的次数
Key_write_requests:在cache block中被请求修改的总次数
Key_write:在cache block中找不到需要修改的key信息后,到.MYI文件中读入在修改的次数
=====================================================================
与Cache相关的性能状态参数相关的计算公式
索引缓冲区的使用比率=(1-Key_blocks_used/(Key_blocks_used+Key_blocks_unused))*100%
个人觉得是=Key_blocks_used/(Key_blocks_used+Key_blocks_unused)*100%
#####################################################################
索引缓存的读取命中率=(1-Key_reads/Key_reads_requests)*100%
#####################################################################
索引缓存的修改命中率=(1-Key_write/Key_write_requests)*100%
#####################################################################
备注
1、索引缓冲区的使用比率应该在99%-100%,如果该值过低,说明我们key_buffer_size值设置的过大了
2、索引缓存的读取命中率应该尽可能高,如果该值过低,说明我们key_buffer_size值设置的过小,或者key_cache_division_limit和key_cache_age_threshold设置不当,造成缓存失效过快
-- 转载自:http://www.php1.cn/article/8849.html