如果不了解数据库本身,这很难.你应该注意一些工具;
关于将整个数据库存储在内存中;在磁盘上执行写入之前,对数据库进行更改的任何查询都将保持打开状态.唯一可以避免磁盘成为瓶颈的是带有写缓存的磁盘控制器.
我将从默认值开始以下更改:
key_buffer_size = 128M
thread_stack = 128K
thread_cache_size = 8
table_cache = 8192
max_heap_table_size = 256M
query_cache_limit = 4M
query_cache_size = 512M
innodb_buffer_pool_size = 4G
# This is crucial to avoid checkpointing all the time:
innodb_log_file_size = 512M
# If you have control on who consumes the DB, and you don't use hostnames when you've set up permissions - this can help as well.
skip_name_resolve
然后我会看到事情的进展,并根据(除其他事项)上述工具的输出尝试不同的事情.我还要确保使用监控工具(如Munin或Cacti)绘制趋势图,以查看我实际处理的工作量类型.就个人而言,我对Munin提供的MySQL插件有很好的经验.