idiot00 2017-10-20
一些MySQL InnoDB相关参数设置说明。
innodb_buffer_pool_size
此参数类似于Oracle的SGA配置,当主机做为mysql数据库服务器时,一般配置为整机内存的60%~80%。
innodb_buffer_pool_instances
此参数用于设置内存缓冲池实例数,将innodb_buffer_pool_size配置的内存分割成N份,此参数当配置内存大小于1G时才生效,当数据库有多个会话进行数据库操作时用于并行在多个内存块中处理任务,一般配置值小于等于服务器CPU的个数。
max_connections
此参数用于设置MySQL的最大连接数,当数据库面对高并发时,这个值需要调节为一个合理的值,才满足业务的并发要求,避免数据库拒绝连接。
max_user_connections
此参数用于设置单个用户的连接数。
innodb_log_buffer_size
此参数用于设置日志缓冲区大小,一般不用设置太大,能存下1秒钟操作的数据日志就行了,mysql默认1秒写一轮询写一次日志到磁盘。
innodb_stats_on_metadata
此参数用于设置是否动态收集统计信息,开启时会影响数据库的性能(一般关闭,找个时间手动刷新,或定时刷新)如果为关闭时,需要配置数据库调度任务,定时刷新数据库的统计信息。
innodb_lock_wait_timeout
此参数用于控制锁的超时时间,默认为50,这个值要注意,如果有特殊业务确实要耗时较长时,不能配置太短。
innodb_thread_concurrency
此参数用于设置限制能够进入innodb层的线程数
建议设置成机器cpu核数的2倍,不过大多数情况下,默认值已经足够。
innodb_write_io_threads
此参数用于写脏页的线程数(数据库写操作时的线程数,用于并发)
innodb_read_io_threads
此参数用于从磁盘读文件块的线程数(数据库读操作时的线程数,用于并发)
假如CPU是2颗8核的,那么可以按照如下设置:
innodb_read_io_threads = 8
innodb_write_io_threads = 8
如果数据库的读操作比写操作多,那么可以设置:
innodb_read_io_threads = 10
innodb_write_io_threads = 6