我们有一个使用MyIsam表运行MySQL 5.0.45的大小为150 GB的数据库,有一些大表的大小超过5 GB,索引为2GB.
服务器配置为:
8GB
双核3.2GHz –启用超线程
一次突袭5-SCSI
1GB网卡
64位操作系统
这是我们的my.cnf文件:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
log=/var/log/mysqld.log
log-slow-queries=/var/log/mysqld-slow.log
set-variable=long_query_time=2
set-variable=sql_mode=ANSI_QUOTES
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking
max_connections = 100
key_buffer = 384M
max_allowed_packet = 16M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size = 32M
thread_concurrency = 3
[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
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[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
非常感谢您提出改善查询性能的建议(读80%/写20%)
谢谢,
大卫
解决方法:
这里没有足够的答案.它取决于应用程序-在哪个表/索引很热(以及多么热)以及查询是否可以有效使用索引,内存中是否存在索引,操作系统是否能够使用索引方面缓存代表数据的页面,依此类推.
MySQL手册有很多技巧,但是,如果您想要一个适用于很多人的快捷方式,请执行SHOW STATUS和SHOW VARIABLES并查看各种缓存的命中率,并相应地扩展缓存大小.但是并不是所有的缓存命中都是一样的…
数据库管理是一个复杂的领域,并不是一个通常可以解决的问题.