MySQL:Innodb:innodb_flush_log_at_trx_commit参数影响的位置
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,源码5.7.22影响阶段:MYSQL_BIN_LOG::ordered_commit 的flush阶段一、影响的函数innobase_flush_logs函数,函数如下其实注释也写得很清楚了。binl
千家信息网最后更新 2026年10月31日MySQL:Innodb:innodb_flush_log_at_trx_commit参数影响的位置
源码5.7.22
影响阶段:MYSQL_BIN_LOG::ordered_commit 的flush阶段
一、影响的函数
innobase_flush_logs函数,函数如下其实注释也写得很清楚了。binlog_group_flush 参数为1。
/** Flush InnoDB redo logs to the file system.@param[in] hton InnoDB handlerton@param[in] binlog_group_flush true if we got invoked by binloggroup commit during flush stage, false in other cases.@return false */staticboolinnobase_flush_logs( handlerton* hton, bool binlog_group_flush){ DBUG_ENTER("innobase_flush_logs"); DBUG_ASSERT(hton == innodb_hton_ptr); if (srv_read_only_mode) { DBUG_RETURN(false); } /* If !binlog_group_flush, we got invoked by FLUSH LOGS or similar. Else, we got invoked by binlog group commit during flush stage. */ if (binlog_group_flush && thd_flush_log_at_trx_commit(NULL) == 0) { /* innodb_flush_log_at_trx_commit=0 (write and sync once per second). Do not flush the redo log during binlog group commit. */ DBUG_RETURN(false); } /* Flush the redo log buffer to the redo log file. Sync it to disc if we are in FLUSH LOGS, or if innodb_flush_log_at_trx_commit=1 (write and sync at each commit). */ log_buffer_flush_to_disk(!binlog_group_flush || thd_flush_log_at_trx_commit(NULL) == 1); DBUG_RETURN(false);}二、可能的组合
innodb_flush_log_at_trx_commit参数为 0
binlog_group_flush && thd_flush_log_at_trx_commit(NULL) == 0 条件成立,因此直接return了,那么这种情况下log_buffer_flush_to_disk函数不会调用,因此不会做redo刷盘。依赖master线程。innodb_flush_log_at_trx_commit参数为 1
!binlog_group_flush|| thd_flush_log_at_trx_commit(NULL) == 1 返回为1即为True,因此调用log_buffer_flush_to_disk(True),因此需要做redo刷盘,也要做sync。innodb_flush_log_at_trx_commit参数为 2
!binlog_group_flush|| thd_flush_log_at_trx_commit(NULL) == 1 返回为0即为Flase,因此调用
log_buffer_flush_to_disk(Flase),因此需要做redo刷盘,不做sync。依赖OS的刷盘机制。
三、调用栈帧
#0 innobase_flush_logs (hton=0x2e9edd0, binlog_group_flush=true) at /root/mysql5.7.14/percona-server-5.7.14-7/storage/innobase/handler/ha_innodb.cc:4385#1 0x0000000000f65893 in flush_handlerton (thd=0x0, plugin=0x7ffff01558e8, arg=0x7ffff0155944) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/handler.cc:2606#2 0x00000000015d7716 in plugin_foreach_with_mask (thd=0x0, func=0xf65835, type=1, state_mask=4294967287, arg=0x7ffff0155944) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/sql_plugin.cc:2318#3 0x0000000000f658ef in ha_flush_logs (db_type=0x0, binlog_group_flush=true) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/handler.cc:2617#4 0x000000000185733d in MYSQL_BIN_LOG::process_flush_stage_queue (this=0x2e01c80, total_bytes_var=0x7ffff0155a88, rotate_var=0x7ffff0155a87, out_queue_var=0x7ffff0155a78) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/binlog.cc:8541#5 0x000000000185899f in MYSQL_BIN_LOG::ordered_commit (this=0x2e01c80, thd=0x7fff2c000b70, all=false, skip_commit=false) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/binlog.cc:9189#6 0x000000000185700c in MYSQL_BIN_LOG::commit (this=0x2e01c80, thd=0x7fff2c000b70, all=false) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/binlog.cc:8440#7 0x0000000000f63df8 in ha_commit_trans (thd=0x7fff2c000b70, all=false, ignore_global_read_lock=false) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/handler.cc:1818#8 0x00000000016b3e5d in trans_commit_stmt (thd=0x7fff2c000b70) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/transaction.cc:458#9 0x00000000015ac677 in mysql_execute_command (thd=0x7fff2c000b70, first_level=true) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/sql_parse.cc:5239#10 0x00000000015adcd6 in mysql_parse (thd=0x7fff2c000b70, parser_state=0x7ffff0158600) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/sql_parse.cc:5836#11 0x00000000015a1b95 in dispatch_command (thd=0x7fff2c000b70, com_data=0x7ffff0158d70, command=COM_QUERY) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/sql_parse.cc:1447#12 0x00000000015a09c6 in do_command (thd=0x7fff2c000b70) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/sql_parse.cc:1010#13 0x00000000016e29d0 in handle_connection (arg=0x3803f30) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/conn_handler/connection_handler_per_thread.cc:312#14 0x0000000001d7b4b0 in pfs_spawn_thread (arg=0x3810b80) at /root/mysql5.7.14/percona-server-5.7.14-7/storage/perfschema/pfs.cc:2188#15 0x0000003f74807aa1 in start_thread () from /lib64/libpthread.so.0#16 0x0000003f740e8bcd in clone () from /lib64/libc.so.6
作者微信:gaopp_22389860
参数
函数
影响
阶段
清楚
作者
情况
机制
条件
注释
源码
线程
组合
位置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技
互联网科技公司起名
互联网科技巨头监管
互联网科技官网
智能科技公司是互联网公司吗
金融科技创新监管互联网金融
广州互联网科技公司
互联网医疗科技
互联网科技金融公司
喔噻互联网科技
深圳天众互联网科技公司
广州紫鲸互联网科技
互联网科技类展会
互联网科技公司招聘
黑科技闪耀互联网之光
深圳市优智互联网科技有限公司
烟台灵鸽互联网科技有限公司
容联科技互联网电商
互联网科技收购价值
重庆科技产业互联网有哪些
互联网科技的发展
互联网 科技创新
互联网未来科技
远信互联网科技
撒么互联网科技公司
互联网科技公司名称
上海宁丞科技互联网
晓花互联网科技有限公司网址
工业互联网山东科技大学
互联网 科技节活动 微视频大赛