MySQL的几个和innodb相关的主要参数设置总结
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,1).innodb_buffer_pool_size为了提升性能,可以把要写的数据先在缓冲区buffer里合并,然后再发送给下一级存储。这样做可以提高I/O读写的效率。InnoDB Buffer Po
千家信息网最后更新 2025年11月15日MySQL的几个和innodb相关的主要参数设置总结1).innodb_buffer_pool_size
为了提升性能,可以把要写的数据先在缓冲区buffer里合并,然后再发送给下一级存储。这样做可以提高I/O读写的效率。
InnoDB Buffer Pool就是InnoDB用来缓存它的数据和索引的内存缓冲区,可由innodb_buffer_pool_size设置其大小。
理论上将这个值设置的越高,访问数据需要的磁盘I/O就越少。常见的做法是让这个值大于热点数据,这样可以获得比较好的性能。建议将其值设置为机器物理内存大小的70%-80%之间。
2).innodb_log_file_size
日志组里每个日志文件的大小,在32位计算机上日志文件的合并大小必须小于4GB,默认大小是5MB,在生产环境下,这个值需要调整,官方文档推荐值为1MB到1/N的缓冲池大小,其中N是日志组里日志文件的数(由innodb_log_files_in_group变量来确定,一般
默认值为2)。值越大,在缓冲池中需要检查点刷新的行为就越少,因此也就越节约磁盘I/O,但更大的日志文件也意味着在崩溃时恢复的更慢。
建议将日志文件的大小设置为256MB或更大,这样可以满足一般情况下的需要。
3).innodb_flush_log_at_trx_commit,建议设置为2
这个选项的默认值是1,当设置为2时,在每个事务提交时,日志缓冲被写到文件中,但不对日志文件做刷新到磁盘的操作。对日志文件的刷新每秒才发生一次。所以,理论上操作系统崩溃或掉电只会丢失最后一秒的事务。
以下是设置为0,1,2三个值的详细解释:
如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.
如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。
该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。
4).sync_binlog,建议设置为0
sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。
sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
如果是autocommit模式,那么每执行一个语句就会向binlog里写入一次,否则每个事务写入一次。如果sync_binlog的值为正,那么每当sync_binlog参数设定的语句或事务数被写入binlog后,MySQL服务器就会将它的二进制日志同步到硬盘上。默认值是0,不与硬盘同步。值为1是最安全的选择,因为崩溃时,
你最多丢失binlog中的一个语句或事务。但是这也是最慢的选择,成本昂贵。
innodb_flush_log_at_trx_commit和sync_binlog参数的区别:
innodb_flush_log_at_trx_commit 这个是控制的是 innodb 存储的表的数据写入方式, 是ib_logfile这个文件的刷新方式
sync_binlog 控制的是 binlog 的写入,是mysql-bin.000的刷新方式
为了提升性能,可以把要写的数据先在缓冲区buffer里合并,然后再发送给下一级存储。这样做可以提高I/O读写的效率。
InnoDB Buffer Pool就是InnoDB用来缓存它的数据和索引的内存缓冲区,可由innodb_buffer_pool_size设置其大小。
理论上将这个值设置的越高,访问数据需要的磁盘I/O就越少。常见的做法是让这个值大于热点数据,这样可以获得比较好的性能。建议将其值设置为机器物理内存大小的70%-80%之间。
2).innodb_log_file_size
日志组里每个日志文件的大小,在32位计算机上日志文件的合并大小必须小于4GB,默认大小是5MB,在生产环境下,这个值需要调整,官方文档推荐值为1MB到1/N的缓冲池大小,其中N是日志组里日志文件的数(由innodb_log_files_in_group变量来确定,一般
默认值为2)。值越大,在缓冲池中需要检查点刷新的行为就越少,因此也就越节约磁盘I/O,但更大的日志文件也意味着在崩溃时恢复的更慢。
建议将日志文件的大小设置为256MB或更大,这样可以满足一般情况下的需要。
3).innodb_flush_log_at_trx_commit,建议设置为2
这个选项的默认值是1,当设置为2时,在每个事务提交时,日志缓冲被写到文件中,但不对日志文件做刷新到磁盘的操作。对日志文件的刷新每秒才发生一次。所以,理论上操作系统崩溃或掉电只会丢失最后一秒的事务。
以下是设置为0,1,2三个值的详细解释:
如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.
如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。
该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。
4).sync_binlog,建议设置为0
sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。
sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
如果是autocommit模式,那么每执行一个语句就会向binlog里写入一次,否则每个事务写入一次。如果sync_binlog的值为正,那么每当sync_binlog参数设定的语句或事务数被写入binlog后,MySQL服务器就会将它的二进制日志同步到硬盘上。默认值是0,不与硬盘同步。值为1是最安全的选择,因为崩溃时,
你最多丢失binlog中的一个语句或事务。但是这也是最慢的选择,成本昂贵。
innodb_flush_log_at_trx_commit和sync_binlog参数的区别:
innodb_flush_log_at_trx_commit 这个是控制的是 innodb 存储的表的数据写入方式, 是ib_logfile这个文件的刷新方式
sync_binlog 控制的是 binlog 的写入,是mysql-bin.000的刷新方式
磁盘
日志
事务
文件
数据
大小
同步
缓冲
建议
方式
模式
语句
参数
内存
同时
性能
指令
时候
理论
硬盘
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
小辉博客专注网络技术
数据库热备方案
网络安全保卫与管理教研室
ccer数据库字典
多线程同步数据库demo
国家信息网络安全首席执行官
2018网络安全法知识问答
我的世界服务器刷凋零
网络安全A学校
欧洲企业高管调查网络安全
长沙5g网络技术公司
秋月之光服务器
一元购软件开发深圳
网络安全公司产品线比较
大型复杂网络安全监测
网络安全防护建设建设内容
怎样消除文件中的数据库
双路服务器 推荐
信息网络安全带三个时代
山西企业软件开发编程
金蝶10.0安装数据库
红外标准物数据库
软件开发知识培训
校园网络安全宣传漫画
8路服务器 4路服务器
牢记十大网络安全金句
软件开发业的宏观经济政策
网民网络安全法
php读取数据库转换字符
无线网络技术教程第二版题库