|
以下参数是在mysql-5.6.27中使用,可能mysql版本不同使用方法不一样。
1.线程参数
innodb_read_io_threads=6 --innodb存储引擎读线程数,供客户端读取数据,默认值是4
innodb_read_io_threads=7 --innodb存储引擎写线程数,供客户端写入数据,默认值是4
innodb_purge_threads=2 --innodb存储引擎回收purge页线程,清空脏数据,默认值是1
innodb_lru_scan_depth=1024 --控制LRU的可用页的数量,默认值是1024
innodb_max_dirty_pages_pct=75 --innodb缓冲池中的脏页大于75%时,checkpoint将一部分的脏页强制刷新到磁盘,一般是100个脏页
innodb_io_capacity=200 --磁盘IO在吞吐量,当数据量很大时默认刷新100个脏页,合并20个插入缓冲时可能忙不过来,此值可以刷新200个脏页,合并200 X 5%=100个插入缓冲,默认值是200
innodb_adaptive_flushing=on --自动刷新脏页,当innodb_max_dirty_pages_pct值小于75时也可以刷新脏页
innodb_purge_batch_size=300 --每次回收undo页的数量,默认值是300个页
innodb_change_buffering=all --插入缓冲只缓冲哪些语句,选项值有inserts,updates,deletes,purges,all,none等.none表示都不进行缓冲,all表示都进行缓冲.默认值是all
innodb_change_buffer_max_size=25 --插入缓冲大小占整个缓冲池的25%内存大小,最大值是50
innodb_adaptive_hash_index=on --启用自适应哈稀索引(AHI),哈稀索引是一次读取数据,只能等值使用
2.缓冲池参数
innodb_buffer_pool_size=2G --innodb存储引擎缓冲池包括数据页,索引页,插入缓冲,自适应哈稀索引,数据字典,锁信息.myisam只缓存索引文件.默认值134217728字节(128M).
innodb_buffer_pool_instances=8 --innodb的缓冲池个数,与innodb_buffer_pool_size配合使用
innodb_old_blocks_pct=37 --使用LRU(最近最少算法)算法计算缓冲池,缓冲池前面63%为最活跃数据,63%以后为历史数据,最活跃数据命中率高.
innodb_old_blocks_time=100 --数据被读后100s才加入到最活跃缓冲池中
innodb_log_buffer_size=8M --重做日志缓冲大小,不宜设置太大,master thread是每秒同步到磁盘,事物提交同步到磁盘,重做日志空间剩余1/2也同步到磁盘,默认为8M
3.数据恢复
innodb_fast_shutdown=1 --0表示关闭mysql时完成所有的full purge和merge insterbuffer操作.1表示将缓冲池刷新到磁盘,2表示将所有操作写入日志,下次启动时进行恢复
innodb_force_recover=1 --1表示忽略检查corrupt页,将所有脏页同步到磁盘,2表示阻止主线程运行,3表示不执行事物回滚操作,4表示不执行缓冲插入操作,5表示不查看重做日志,6表示不执行前滚操作
4.二次写(doublewrite由两部分组成,一部分是内存中的doublewrite buffer,大小为2MB,另一部分是物理磁盘上的共享表空间连续的128个页,大小也是2MB)
mysql> show global status like '%innodb_db%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Innodb_dblwr_pages_written | 1 | --一共写了多少个页
| Innodb_dblwr_writes | 1 | --写了多少个页,如果(总数:写入)小于64:1证明写入负载不大
+----------------------------+-------+
2 rows in set (0.00 sec)
mysql>
|
|