常见优化:
----------------感觉不常用---------------
binlog_do_db=name 对哪些库记录日志
binlog_ignore_db=name 对哪些库不记录日志
---------读写分离--------------
配置一个代理一个主从做读写分离,写主读从。
--------常用属性---------
max_connections 允许的最大并发连接数。
connect_timeout 等待建立连接的超时秒数,默认10s,只在登录时有效。
wait_timeout 等待关闭连接的不活动超时秒数,默认8小时。
已使用连接数max_used_connections/最大并发连接数 <=85%为佳。
------缓存参数-----------
key_buffer_size MyISAM引擎用,拜拜。
sort_buffer_size 为每个要排序的线程分配此大小的缓存空间(针对ODER和GROUP速度)。
read_buffer_size read_rnd_buffer_size影响查询/排序查询响应速度。
thread_cache_size可重用线程数。
-----文件系统层优化------
挂载时候的三个选项:noatime, nodiratime, nobarrier几个选项(nobarrier是xfs文件系统特有的);
------其他参数------
调整innodb_buffer_pool_size大小,如果是单实例且绝大多数是InnoDB引擎表的话,可考虑设置为物理内存的50% ~ 70%左右;
根据实际需要设置innodb_flush_log_at_trx_commit、sync_binlog的值。如果要求数据不能丢失,那么两个都设为1。如果允许丢失一点数据,则可分别设为2和10。而如果完全不用care数据是否丢失的话(例如在slave上,反正大不了重做一次),则可都设为0。这三种设置值导致数据库的性能受到影响程度分别是:高、中、低,也就是第一个会另数据库最慢,最后一个则相反。
设置innodb_file_per_table = 1,使用独立表空间
设置innodb_data_file_path = ibdata1:1G:autoextend 针对高并发
设置innodb_log_file_size=256M,设置innodb_log_files_in_group=2。
根据业务实际需要,适当调整max_connection(最大连接数)、max_connection_error(最大错误数,建议设置为10万以上,而open_files_limit、innodb_open_files、table_open_cache、table_definition_cache这几个参数则可设为约10倍于max_connection的大小。
常见的误区是把tmp_table_size和max_heap_table_size设置的比较大,曾经见过设置为1G的,这2个选项是每个连接会话都会分配的,因此不要设置过大,否则容易导致OOM发生;其他的一些连接会话级选项例如:sort_buffer_size、join_buffer_size、read_buffer_size、read_rnd_buffer_size等,也需要注意不能设置过大。
有些内容摘自ZENGKEFU的博客园。