MySQL:Innodb:innodb_flush_log_at_trx_commit参数影响的位置
源码5.7.22
影响阶段:MYSQL_BIN_LOG::ordered_commit 的flush阶段
一、影响的函数
innobase_flush_logs函数,函数如下其实注释也写得很清楚了。binlog_group_flush 参数为1。
/**FlushInnoDBredologstothefilesystem.@param[in]htonInnoDBhandlerton@param[in]binlog_group_flushtrueifwegotinvokedbybinloggroupcommitduringflushstage,falseinothercases.@returnfalse*/staticboolinnobase_flush_logs(handlerton*hton,boolbinlog_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,wegotinvokedbyFLUSHLOGSorsimilar.Else,wegotinvokedbybinloggroupcommitduringflushstage.*/if(binlog_group_flush&&thd_flush_log_at_trx_commit(NULL)==0){/*innodb_flush_log_at_trx_commit=0(writeandsynconcepersecond).Donotflushtheredologduringbinloggroupcommit.*/DBUG_RETURN(false);}/*Flushtheredologbuffertotheredologfile.SyncittodiscifweareinFLUSHLOGS,orifinnodb_flush_log_at_trx_commit=1(writeandsyncateachcommit).*/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的刷盘机制。
#0innobase_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#10x0000000000f65893inflush_handlerton(thd=0x0,plugin=0x7ffff01558e8,arg=0x7ffff0155944)at/root/mysql5.7.14/percona-server-5.7.14-7/sql/handler.cc:2606#20x00000000015d7716inplugin_foreach_with_mask(thd=0x0,func=0xf65835<flush_handlerton(THD*,plugin_ref,void*)>,type=1,state_mask=4294967287,arg=0x7ffff0155944)at/root/mysql5.7.14/percona-server-5.7.14-7/sql/sql_plugin.cc:2318#30x0000000000f658efinha_flush_logs(db_type=0x0,binlog_group_flush=true)at/root/mysql5.7.14/percona-server-5.7.14-7/sql/handler.cc:2617#40x000000000185733dinMYSQL_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#50x000000000185899finMYSQL_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#60x000000000185700cinMYSQL_BIN_LOG::commit(this=0x2e01c80,thd=0x7fff2c000b70,all=false)at/root/mysql5.7.14/percona-server-5.7.14-7/sql/binlog.cc:8440#70x0000000000f63df8inha_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#80x00000000016b3e5dintrans_commit_stmt(thd=0x7fff2c000b70)at/root/mysql5.7.14/percona-server-5.7.14-7/sql/transaction.cc:458#90x00000000015ac677inmysql_execute_command(thd=0x7fff2c000b70,first_level=true)at/root/mysql5.7.14/percona-server-5.7.14-7/sql/sql_parse.cc:5239#100x00000000015adcd6inmysql_parse(thd=0x7fff2c000b70,parser_state=0x7ffff0158600)at/root/mysql5.7.14/percona-server-5.7.14-7/sql/sql_parse.cc:5836#110x00000000015a1b95indispatch_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#120x00000000015a09c6indo_command(thd=0x7fff2c000b70)at/root/mysql5.7.14/percona-server-5.7.14-7/sql/sql_parse.cc:1010#130x00000000016e29d0inhandle_connection(arg=0x3803f30)at/root/mysql5.7.14/percona-server-5.7.14-7/sql/conn_handler/connection_handler_per_thread.cc:312#140x0000000001d7b4b0inpfs_spawn_thread(arg=0x3810b80)at/root/mysql5.7.14/percona-server-5.7.14-7/storage/perfschema/pfs.cc:2188#150x0000003f74807aa1instart_thread()from/lib64/libpthread.so.0#160x0000003f740e8bcdinclone()from/lib64/libc.so.6
作者微信:gaopp_22389860
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。