mysql数据库配置优化
缓存索引相关参数:
query_cache 缓存结果集,极高效,与sql语句一一对应,也有弊端,
binlog_cache_size 缓存binlog数据,影响所有写入操作的性能,我们服务器上设置的是32768,4G内存
thread_cache 缓存连接线程,影响连接建立效率,对短连接影响较大
back_log 表示暂时停止响应新请求之前可以存储在堆栈中的请求的数目,一般设置为小于512的整数
key_buffer_size 表示索引能使用的缓冲区的大小(用户索引的缓存大小),对于4G的内存来说,一般可设置为256M或384M,对myisam影响
比较大,它只缓存索引,不缓存数据,这是最大的限制
innodb_db_buffer_pool_size 对innoDB有极大影响,缓存索引及数据
innodb_log_buff_size 缓存innoDB写入日志,影响写入效率
innodb_max_dirty_pages_pct 设置innoDB Buffer中脏页占比,默认是90(比较大)
sort_buffer_size 表示查询缓存时可使用的缓冲区大小,对于4G的内存来说,设置为6-8M
read_buffer_size 表示读查询操作可使用的缓冲区大小,对于4G的内存来说,,设置为4M左右
join_buffer_size 表示连接查询操作时可以使用的缓冲区大小,对于4G的内存来说,设置为8M
query_cache_size 表示查询缓冲区的大小,对于4G的内存来说,建议设置为64M,当然了这个据情况而定
table_cache 缓存打开的表信息,物理内存越大,该值设置就越大,默认为2402,可设置为512-1024之间
max_heap_table_size 独立一个内存表所允许使用的做大的缓存,防止一个表的缓存太大,将所有缓存都耗尽
连接相关参数:
max_connections 表示最多的连接数,如果经常提示too many connections就应该增大该值,最大值是3000
max_connect_errors 限制用户登录时最大登录失败次数
back_log影响突发连接暴增场景
skip-name-resolve 取消对客户端的DNS反解,影响连接和授权(建议关闭)
internactive_timeout 和wait_timeout 过期时间,对于4G的内存来说,可设置为5-10之间
磁盘的IO方式
innodb_flush_method innodb文件打开方式,linux下文件系统影响大
innodb_flush_log_at_trx_commit 影响innodb日志事务刷新机制(0.1.2)
innodb_file_per_table 影响表存储方式,文件过大会影响性能
sync_binlog 影响binlog日志刷新到磁盘的机制
指导原则
query_cache 不超过256M,除非基本静态,INNODB无效(因为有很多限制)
binlog_cache_size 2M-4M <32M
table_cache 1024(已经足够)
thread_cache 1024 不要超过最大连接数, key_buffer_size 如果没有myISAM 16MB,否则尽量大 innodb_db_buffer_pool_size 仅作用于innoDB,所有文件大小之内尽可能大 innodb_log_buff_size 4-8MB,<32M max_connections 1000-2000<10000 max_connect_errors >1000,