標籤:mysql 參數調優 mariadb key_buffer_size
mysql資料庫中,key_buffer_size是對MYISAM表效能影響最大的參數。
下面以MYISAM為主要儲存引擎伺服器的配置:
MariaDB [(none)]> show variables like ‘key_buffer_size‘;
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| key_buffer_size | 134217728 |
+-----------------+-----------+
分配128M記憶體給key_buffer_size。
而key_buffer_size的使用方式:
MariaDB [(none)]> show global status like ‘key_read%‘;
+-------------------+--------+
| Variable_name | Value |
+-------------------+--------+
| Key_read_requests | 181043 |
| Key_reads | 29 |
+-------------------+--------+
一共181043個索引請求,有29個請求在記憶體中沒有找到,直接從硬碟中讀取索引
計算索引未命中緩衝的機率:
key_cache_miss_rate = Key_reads / Key_read_requests * 100%
根據key_cache_miss_rate資料判斷:>0.1%則要適當調大key_buffer_size的值;
<0.1%,>0.01% 適合 ;
<0.01% 分配的key_buffer_size過大,浪費,適當調小。
key_blocks_*參數
MariaDB [(none)]> show global status like ‘key_blocks_u%‘;
+-------------------+--------+
| Variable_name | Value |
+-------------------+--------+
| Key_blocks_unused | 107170 |
| Key_blocks_used | 1 |
+-------------------+--------+
key_blocks_unused表示從未被使用到的記憶體簇,就算曾經分配最大記憶體時,也還剩餘的量。若為0,則表示最大使用時key_buffer全部使用;
key_blocks_used表示曾經使用到的最大的blocks
比較理想的設定:
Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 80%
mysql中key_buffer_size參數最佳化