MySQL的几个和innodb相关的主要参数设置总结
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,1).innodb_buffer_pool_size为了提升性能,可以把要写的数据先在缓冲区buffer里合并,然后再发送给下一级存储。这样做可以提高I/O读写的效率。InnoDB Buffer Po
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
计算机网络安全蠕虫
BDAI代表网络安全事件
东莞市网络安全支队
山西文档软件开发常用指南
道路网络安全知识讲座
福建约客课互联网科技有限公司
跨境电商目前的网络安全
数据库中一个下划线是几个字
网络技术聘用合同
高贝尔网络技术有限公司
杨浦区软件开发系统
数据库日期查询
服务器2个网口做互通
组态王连接服务器报警
怎么描述软件开发
岁末年初国资企业网络安全总结
去除数据库中的重复想
苹果309 软件开发
嗨皮咳嗽的服务器主机在哪
医院网络安全协议书
优胜科技软件开发
网络安全禁止词语
山东省春考计算机网络技术
企业网络服务器的规划与实现摘要
山东省计算机网络技术春考题
抗击疫情的计算机网络技术
网络安全定制戒指
桌面背景下载软件开发
双节网络安全宣传
三星手机服务器繁忙