免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 40240 | 回复: 0

innodb常见参数详解 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-06-11 06:20:00
发表于 2016-06-02 10:05 |显示全部楼层
一、文件(数据文件、日志文件)
     1、相关参数:
          innodb_data_home_dir
          innodb_data_file_path=file_name:file_size[:autoextend[:max:max_file_size]]

     注:
          a、innodb_data_file_path的值应该为一个或多个 数据文件规格的列表。如果命名一个以上的数据文件,用 分号(‘;’)分隔它们
          b、autoextend属性和后面跟着的属性只可被用来对innodb_data_file_path行里最后一个数据文件。
          c、InnoDB不创建目录,所以在启动服务器之前请确认/ibdata目录的确存在
          d、如果没有指定innodb_data_home_dir,则默认为mysql数据目录
         e、如果你指定innodb_data_home_dir为一个空字符串,你可以为列在innodb_data_file_path值里的数据文件指定绝对路径。
[mysqld]
innodb_data_home_dir =
innodb_data_file_path=/ibdata/ibdata1:50M;/ibdata/ibdata2:50M:autoextend
二、参数
     1、innodb_autoextend_increment(动态,默认为8M)
          当自动扩展表空间被填满之时,为扩展而增加的尺寸(MB为单位)。
     2、innodb_fast_shutdown(动态,默认为1)
          0:在关闭之前做一个完全净化、插入缓冲合并和刷脏页,最慢,但重启最快
          1:InnoDB在关闭之时跳过purge和insert buffer merge,只刷脏页
          2:刷新日志并强制关闭,类似crash,数据不会丢,但在启动时会做一次崩溃恢复
          mysql在关闭的时候进行的操作:
               1、purge all:删除无用的undo页
               2、merge insert buffer
               3、flush dirty page
     3、innodb_flush_log_at_trx_commit(动态,默认为1)
          0:最快,日志缓冲按默认每秒一次地刷到磁盘,但在事务提交时不做操作,mysql崩溃时会丢失最后一秒的事务
          1:最安全,日志缓冲按默认每秒一次地刷到磁盘,并在事务提交时刷新到日志文件,同时调用fsync刷新到磁盘
          2:折中,日志缓冲按默认每秒一次地刷到磁盘,并在事务提交时刷新到日志文件,但不调用fsync,只有在系统崩溃时才会丢失最后一秒的事务
     4、innodb_force_recovery(静态,默认为0),用于从损坏的DB转储数据
0:表示当需要恢复时执行所有的恢复操作(即校验数据页/purge undo/insert buffer merge/rolling back&forward).当不能进行有效的恢复操作时,mysql有可能无法启动,并记录下错误日志.
1.(SRV_FORCE_IGNORE_CORRUPT):     忽略检查到的corrupt页.
2.(SRV_FORCE_NO_BACKGROUND):    阻止主线程的运行,如主线程需要执行full purge操作,会导致crash.
3.(SRV_FORCE_NO_TRX_UNDO):    不执行事务回滚操作.
4.(SRV_FORCE_NO_IBUF_MERGE):    不执行插入缓冲的合并操作.
5.(SRV_FORCE_NO_UNDO_LOG_SCAN):    不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交.
6.(SRV_FORCE_NO_LOG_REDO):    不执行前滚的操作.
                当设置参数值大于0后,可以对表进行select、create、drop操作,但insert、update、delete这类操作是不允许的
     5、innodb_lock_wait_timeout
               InnoDB事务在回滚之前可以等待一个锁定的秒数
     6、innodb_max_dirty_pages_pct
               InnoDB中的主线程试着从缓冲池写页面,使得脏页的百分比不超过这个值。
          在show innodb status的log段中,可以查看Last checkpoint at与Log flushed up to的距离判断当前脏页的情况
          在BUFFER POOL AND MEMORY中,查看Modified db pages与Buffer pool size的比例关系,该值约等于innodb_max_dirty_pages_pct
         
show innodb status\G;

LOG
---
Log sequence number 16 881655880
Log flushed up to   16 881649862
Last checkpoint at  16 546135914
可以看到检查点与log sequence number,Log flushed up to都有相当大的差距。

----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 19338953832; in additional pool allocated 13600768
Buffer pool size   1048576
Free buffers       17666
Database pages     1009478
Modified db pages  204553

               修改的页占到整个数据库buffer pool页将近20%,大小为204553*16k/1024=3.196G
     7、innodb_max_purge_lag
     8、innodb_mirrored_log_groups(默认为1,没有镜像)
               为数据库保持的日志组内同样拷贝的数量。
     10、innodb_open_files
在InnoDB中,这个选项仅与你使用多表空间时有关。它指定InnoDB一次可以保持打开的.ibd文件的最大数目。最小值是10。 默认值300。
对.ibd文件的文件描述符是仅对InnoDB的。它们独立于那些由--open-files-limit服务器选项指定的描述符,且不影响表缓存的操作。




innodb_thread_concurrency
InnoDB试着在InnoDB内保持操作系统线程的数量少于或等于这个参数给出的限制。如果有性能问题,并
且SHOW INNODB STATUS显示许多线程在等待信号,可以让线程“thrashing” ,并且设置这个参数更小或更
大。如果你的计算机有多个处理器和磁盘,你可以试着这个值更大以更好地利用计算机的资源。一个推荐的值
是系统上处理器和磁盘的个数之和。值为500或比500大会禁止 调用并发检查。默认值是20,并且如果设置大
于或等于20,并发检查将被禁止。
·   innodb_status_file
这个选项让InnoDB为周期的SHOW INNODB STATUS输出创建一个文件<datadir>/innodb_status.<pid>。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP