MySQL 配置:缓存
一、使用 innodb_flush_method=O_DIRECT 来避免写的时候出现双缓冲区。服务器
二、避免使用 O_DIRECT 和 EXT3 文件系统 — 这会把全部写入的东西序列化。性能
三、分配足够 innodb_buffer_pool_size ,来将整个InnoDB 文件加载到内存 — 减小从磁盘上读。测试
四、不要让 innodb_log_file_size 太大,这样可以更快,也有更多的磁盘空间 — 常常刷新有利下降发生故障时的恢复时间。ip
五、不要同时使用 innodb_thread_concurrency 和 thread_concurrency 变量 — 这两个值不能兼容。内存
六、为 max_connections 指定一个小的值 — 太多的链接将耗尽你的RAM,致使整个MySQL服务器被锁定。requests
七、保持 thread_cache 在一个相对较高的数值,大约是 16 — 防止打开链接时候速度降低。it
八、使用 skip-name-resolve — 移除 DNS 查找。io
九、若是你的查询重复率比较高,而且你的数据不是常常改变,请使用查询缓存 — 可是,在常常改变的数据上使用查询缓存会对性能有负面影响。innodb
十、增长 temp_table_size — 防止磁盘写。
十一、增长 max_heap_table_size — 防止磁盘写。
十二、不要将 sort_buffer_size 的值设置的过高 — 可能致使链接很快耗尽全部内存。
1三、监控 key_read_requests 和 key_reads,以便肯定 key_buffer 的值 — key 的读需求应该比 key_reads 的值更高,不然使用 key_buffer 就没有效率了。
1四、设置 innodb_flush_log_at_trx_commit = 0 能够提升性能,可是保持默认值(1)的话,能保证数据的完整性,也能保证复制不会滞后。
1五、有一个测试环境,便于测试你的配置,能够常常重启,不会影响生产环境。