现在,我从名为 information_schema 的 MySQL 数据库的 'GLOBAL_STATUS' 和 'GLOBAL_VARIABLES' 表中检索了一些日期。
我可以取回
key_buffer_size
key_cache_block_size
query_cache_limit
Query_cache_size...等等...
但是,我不知道如何计算Key hitrate、Key buffer used和 query cache hitrate的比率
所以,有人可以得到关于这些的公式,比如
? / ? * 100% = ?
Abd*_*naf 11
为了您的参考,我也试图解释一些概念。
按键命中率
按键命中率基本上有两种形式
1.密钥读取效率
Key Reads:从磁盘物理读取一个关键块的次数。
密钥读取请求:从缓存中读取密钥块的请求数。
Key Read Efficiency = [1 - (Key_reads/Key_read_requests)]*100
Run Code Online (Sandbox Code Playgroud)
Key Read Efficiency:从缓存中物理读取关键块的次数与从缓存中读取关键块的请求次数之比,以百分比表示。Key Read Efficiency的值为90%及以上,则MySQL性能良好。增加缓存的大小可以提高 Key Read Efficiency 的值,从而提高性能。
2.Key写入效率
Key Writes:关键块物理写入磁盘的次数。
密钥写入请求:将密钥块写入缓存的请求数。
Key Write Efficiency=(Key_write/Key_write_requests)*100
Run Code Online (Sandbox Code Playgroud)
Key Write Efficiency:关键块物理写入缓存的次数与关键块写入缓存的请求次数的百分比。为使 MySQL 服务器具有良好的性能,Key Write Efficiency 的值必须为 90% 及以上。如果发现较少,则可以增加缓存的大小以提高性能。
使用的密钥缓冲区
找到 key_buffer_size 的值作为 show variables like 'key_buffer_size';
将其转换为 MB。
查找所有 MyISAM 索引大小:
SELECT SUM(INDEX_LENGTH)/(1024*1024) 'Index Size' FROM information_schema.TABLES where ENGINE='MyISAM' AND TABLE_SCHEMA NOT IN('mysql','information_schema');
找
(Index Size)/key_buffer_size(in MB) * 100
Run Code Online (Sandbox Code Playgroud)
如果结果是 (<=100 ) 那么你的所有索引都被缓存到 key_buffer 中
如果结果是 (>100),那么您的所有索引都不会缓存到 key_buffer 中,您可以通过增加 key_buffer_size 来提高性能。
查询缓存命中率
命中率 = Qcache_hits / (Qcache_hits + Com_select) * 100
插入率 = Qcache_inserts / (Qcache_hits + Com_select) * 100
修剪率 = (Qcache_lowmem_prunes / Qcache_inserts) * 100
归档时间: |
|
查看次数: |
9460 次 |
最近记录: |