中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL:Innodb:innodb_flush_log_at_trx_commit參數影響的位置

發布時間:2020-08-15 00:12:33 來源:ITPUB博客 閱讀:141 作者:gaopengtttt 欄目:MySQL數據庫

  • 源碼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 binlog
group 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 <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#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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三穗县| 师宗县| 开江县| 东平县| 新竹市| 容城县| 宝应县| 海安县| 定远县| 哈尔滨市| 四平市| 华安县| 宜黄县| 如东县| 曲沃县| 罗甸县| 诸城市| 白城市| 瑞丽市| 东阿县| 秦皇岛市| 汝州市| 永仁县| 巍山| 三都| 嘉峪关市| 山西省| 卓尼县| 黑水县| 庄浪县| 田东县| 长葛市| 香河县| 子长县| 古蔺县| 武邑县| 新化县| 冀州市| 岱山县| 贡嘎县| 库伦旗|