一台服务器,数据文件是60多G,索引文件3.5G左右。原来的服务器内存不够用,于是迁到新服务器。
迁过去之后,想将key_buffer=4G,但show status 一看。可用索引cache块 Key_blocks_unused 只有190多万。每块size是1024.所以总共能用cache才2G,搞不懂设置的4G内存怎么一启动服务器就少了一半???
更奇怪的还在后面,我试着将key_buffer=3G,Key_blocks_unused 竟然上升到了210万左右。就是说设置3G比4G竟然获得的cache
能用块还多一些。可怜我8G的内存,竟然无用武之地。我尝试了各种的key_buffer,最多获得的Key_blocks_unused最大不过210万。也就是说2G左右
因为索引文件有3G多,所以很快就把key_buffer全用完了。以下是我的show status:
| Handler_read_rnd_next    | 479313987  |
| Handler_rollback         | 0          |
| Handler_update           | 61639      |
| Handler_write            | 224440     |
| Key_blocks_not_flushed   | 0          |
| Key_blocks_unused        | 0          |
| Key_blocks_used          | 2093403    |
| Key_read_requests        | 23910054   |
| Key_reads                | 2444242    |
| Key_write_requests       | 970957     |
| Key_writes               | 966113     |
| Max_used_connections     | 63         |
以下是我的mysql 配置:
skip-name-resolve
key_buffer = 3072M
max_allowed_packet = 1M
max_connections = 500
table_cache = 32000
open_files_limit = 65000
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache = 16
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 16[mysqldump]
quick
max_allowed_packet = 16M[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M