我们有一个大小为150 GB的数据库,使用MyIsam表运行MySQL 5.0.45,大型表大小超过5 GB,索引为2GB。 服务器配置是: 8GB 双核3.2GHz - 启用超线程 单raid 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%写入) 谢谢,
大卫
答案 0 :(得分:3)
这里的答案还不够。这取决于应用程序 - 无论是哪些表/索引都很热(以及有多热),以及查询是否可以有效地使用索引,无论索引是否存在于内存中,无论操作系统是否能够缓存表示数据的页面,依此类推。
MySQL手册有很多提示,但是如果你想要一个适用于很多人的快捷方式,请执行SHOW STATUS和SHOW VARIABLES并查看各种缓存的命中率,并相应地扩展缓存大小。但并非所有缓存命中都是相同的......
数据库管理是一个复杂的领域,它不是一个通常可解决的问题。