innodb存储引擎常见参数总结

1、参数可以以show variables like形式去查看

一、

  1. innodb_version innodb 版本号
  2. innodb_read_io_threads/innodb_write_io_threads 读写IO线程数
  3. innodb_purge_threads purge线程数
  4. innodb_buffer_pool_size 缓冲池内存大小
  5. innodb_buffer_pool_instances 缓冲池实例个数
  6. innodb_old_blocks_pct LRU的midpoint位置,old列表占据的百分比,midpoint之前为new列表活跃热点参数,之后为old列表
  7. innodb_old_blocks_time 页读取到midpoint位置后等待该时间才会加入到LRU列表的热端
  8. innodb_log_buffer_size 重做日志缓冲大小
  9. innodb_lru_scan_depth 保证LRU可用页数量,小于该值,刷新脏页
  10. innodb_max_dirty_pages_pct **缓冲值最大脏页占比,超过该值,刷新脏页 **
  11. innodb_purge_batch_size full purge操作时undo页回收的默认数量
  12. innodb_change_buffer_max_size change buffer最大使用内存数量,单位%
  13. show global status like “innodb_dblwr%” 两次写运行情况

二、

  1. log_error 错误日志路径
  2. long_query_time 慢查询时间阈值
  3. lslow_query_log 慢查询开关,默认关闭
  4. slow_query_log_file 慢查询文件路径(set global log_output=“TABLE”【FILE】然后select * from mysql.slow_log\G;可查看慢查询记录)
  5. 配置文件 log-bin [=name],启用二进制文件
  6. max_binlog_size 单个二进制文件空间最大值
  7. binlog_cache_size 二进制缓冲大小,当一个线程开始事务,自动分配该大小的缓冲,只在事务提交的时候一次性写入文件
  8. binlog_format 二进制日志格式,STATEMENT、ROW、MIXED
  9. innodb_data_file_path 默认表空间路径,大小属性
  10. innodb_file_per_table 独立表空间开关参数。开启后(frm表结构文件,ibd表数据文件都在独立表空间)
  11. innodb_log_group_home_dir 重做日志路径
  12. innodb_log_file_size 每个重做日志大小
  13. innodb_log_files_in_group 每组中文件数量
2、show engine innodb status参数介绍
  1. buffer pool hit rate 缓冲池的命中率,一般该值不小于95%
3、其他参数介绍
  1. innodb_fast_down,默认值为1。
  • 0,标识mysql数据库关闭时,需完成所有的full purgemerge buffer,并将所有脏页刷新到磁盘
  • 1,不需要完成上述full purgemerge buffer操作,刷新部分脏页
  • 2,不完成上述full purgemerge buffer操作,也不刷新脏页,而是将日志都写入日志文件
  1. sync_binlog
  • 0:不同步,日志何时刷到磁盘由FileSystem决定,这个性能最好。
  • n:每写n次事务(注意,对于非事务表来说,是n次事件,对于事务表来说,是n次事务,而一个事务里可能包含多个二进制事件),MySQL将执行一次磁盘同步指令fdatasync()将缓存日志刷新到磁盘日志文件中。Mysql中默认的设置是sync_binlog=0,即不同步,这时性能最好,但风险最大。一旦系统奔溃,缓存中的日志都会丢失。
    在innodb的主从复制结构中,如果启用了二进制日志(几乎都会启用),要保证事务的一致性和持久性的时候,必须将sync_binlog的值设置为1,因为每次事务提交都会写入二进制日志,设置为1就保证了每次事务提交时二进制日志都会写入到磁盘中,从而立即被从服务器复制过去。
  1. innodb_support_xa
    两段式提交参数
  2. innodb_flush_log_at_trx_commit
  • 0 : 提交事务的时候,不立即把 redo log buffer 里的数据刷入磁盘文件的,而是依靠 InnoDB 的主线程每秒执行一次刷新到磁盘。此时可能你提交事务了,结果 mysql 宕机了,然后此时内存里的数据全部丢失。
  • 1 : 提交事务的时候,就必须把 redo log 从内存刷入到磁盘文件里去,只要事务提交成功,那么 redo log 就必然在磁盘里了。注意,因为操作系统的“延迟写”特性,此时的刷入只是写到了操作系统的缓冲区中,因此执行同步操作才能保证一定持久化到了硬盘中。
  • 2 : 提交事务的时候,把 redo 日志写入磁盘文件对应的 os cache 缓存里去,而不是直接进入磁盘文件,可能 1 秒后才会把 os cache 里的数据写入到磁盘文件里去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值