当前位置:Gxlcms > 数据库问题 > innodb 核心配置参数介绍

innodb 核心配置参数介绍

时间:2021-07-01 10:21:17 帮助过:4人阅读

说明:配置参数存放在my.cnf文件中,有需求可自定制。

# 表空间模式(即.ibd文件,存放了行数据,索引及LSN号。该文件成为独立表空间):

  参考:https://www.cnblogs.com/quzq/p/12833272.html

  innoda_file_per_table=1,1代表独立表空间,5.6版默认模式;0代表共享表空间,5.6之前的默认模式

  5.6版之前表空间没有独立出来,存放在ibdata1文件中。设为1后创建的表会在data目录中生成表名.ibd文件,

  设置为0后创建的表不会生成该文件,会把.ibd中的内容存放到ibdata1文件中。

# 存储引擎配置:

  default_storage_engine=innodb(5.6的默认引擎)

# 配置共享表空间文件个数和大小(即ibdata1文件,该文件成为共享表空间):

  参考:https://www.cnblogs.com/quzq/p/12833135.html

  innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend

  该配置通常在初始化之前配好,会生成两个文件

# 双一标准的其中一个(默认是1)

  innodb_flush_log_at_trx_commit=1,用于控制redo log buffer中数据写入磁盘redo log文件的。

  值1代表什么呢?(redo log buffer,data buffer poll, undo log buffer都是存在于mysql内存中的)

    mysql启动后会向操作系统申请专用的内存空间,配置为1代表在commit命令后会立即把redo log buffer

    递交到操作系统内存中,然后由操作系统再立即写入到磁盘的redo log文件中。

  值0代表每秒执行一次把redo log buffer递交到操作系统内存,操作系统内存也每秒往redo log中写入一次。

    因为是每秒一次,如果在1秒内发生大量的事务递交,突然宕机,会造成1秒间隔内发生的事务数据丢失

  值2代表每次commit后立即把redo log buffer数据递交到操作系统内存,然后操作系统每秒往redo log中写入一次

    缺点和0一样,只不过能好一点,如果只是mysql服务宕机的话,提交到操作系统内存的事务还不会丢失。

  补充:无论哪个值,redo log buffer递交到操作系统内存的日志都会包含所有,无论该事务是否commit.

# 控制mysql内存中logs到磁盘的过程

  innodb_flush_method=o_direct或fsync, 控制的是redo log buffer和data buffer pool,过程如下:

  技术图片

 

 

   技术图片

 

innodb 核心配置参数介绍

标签:htm   参数   nbsp   tor   包含   efault   end   redo   path   

人气教程排行