天天看点

MySQL 配置优化几例

1、当写入时,使用 innodb_flush_method=O_DIRECT 来避免双缓冲。

2. 避免使用 O_DIRECT 和 EXT3 文件系统 – 你将序列化所有要写入的。

3. 分配足够的 innodb_buffer_pool_size 来加载整个 InnoDB 文件到内存中– 少从磁盘中读取。

4. 不要将 innodb_log_file_size 参数设置太大, 这样可以更快同时有更多的磁盘空间 – 丢掉多的日志通常是好的,在数据库崩溃后可以降低恢复数据库的时间。

5. 不要混用 innodb_thread_concurrency 和 thread_concurrency 参数– 这2个值是不兼容的。

6. 分配一个极小的数量给 max_connections 参数 – 太多的连接会用尽RAM并锁定MySQL服务。

7. 保持 thread_cache 在一个相对较高的数字,大约 16 – 防止打开连接时缓慢。

8. 使用skip-name-resolve参数 – 去掉 DNS 查找。

9.如果你的查询都是重复的,并且数据不常常发生变化,那么可以使用查询缓存。但是如果你的数据经常发生变化,那么使用查询缓存会让你感到失望。

10.增大temp_table_size值,以防止写入磁盘

11.增大max_heap_table_size值,以防止写入磁盘

12.不要把sort_buffer_size值设置的太高,否则的话你的内存将会很快耗尽

13.根据key_read_requests和key_reads值来决定key_buffer的大小,一般情况下key_read_requests应该比key_reads值高,否则你不能高效的使用key_buffer

14.将innodb_flush_log_at_trx_commit设置为0将会提高性能,但是如果你要保持默认值(1)的话,那么你就要确保数据的完整性,同时你也要确保复制不会滞后。

15.你要有一个测试环境,来测试你的配置,并且在不影响正常生产的情况下,可以常常进行重启。