在调优MySQL服务器时,要配置的两个最重要的变量是key_buffer_size
和 table_open_cache
。在尝试更改任何其他变量之前,您应首先确信您已正确设置这些设置。
1: 对于mysql来说,登录的时候,加一个参数
#mysql -u root -p --prompt="\\u@\\d \\r:\\m:\\s>"
--prompt 是加一些登录后的参数,上面参数 u 是加入登录的用户名, d 是登录后选择后(use dbname)的数据库表, r m s 是时间
2: key_buffer_size 对MyISAM表性能影响很大.
-
mysql> show variables like 'key_buffer_size';
-
+ -----------------+------------+
-
| Variable_name | Value |
-
+ -----------------+------------+
-
| key_buffer_size | 536870912 |
-
+ -----------------+------------+
-
mysql> show global status like 'key_read%';
-
+ ------------------------+-------------+
-
| Variable_name | Value |
-
+ ------------------------+-------------+
-
| Key_read_requests | 27813678764 |
-
| Key_reads | 6798830 |
-
+ ------------------------+-------------+
key_cache_miss_rate = Key_reads / Key_read_requests * 100%
比如上面的数据,key_cache_miss_rate为0.0244%,4000个索引读取请求才有一个直接读硬盘,已经很BT了,key_cache_miss_rate在0.1%以下都很好(每1000个请求有一个直接读硬盘),如果key_cache_miss_rate在0.01%以下的话,key_buffer_size分配的过多,可以适当减少。
MySQL服务器还提供了key_blocks_*参数:
-
mysql> show global status like 'key_blocks_u%';
-
+ ------------------------+-------------+
-
| Variable_name | Value |
-
+ ------------------------+-------------+
-
| Key_blocks_unused | 0 |
-
| Key_blocks_used | 413543 |
-
+ ------------------------+-------------+
Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 80%