zoukankan      html  css  js  c++  java
  • mysql源码系列~innodb_flush_log_at_trx_commit在底层实现

    核心函数:trx_flush_log_if_needed_low
    具体逻辑:
    static void trx_flush_log_if_needed_low( lsn_t lsn) {
    {
    switch (srv_flush_log_at_trx_commit) {
    case 0:
    /* Do nothing */ 这里是由master线程的每1秒和每10秒算法进行日志的刷新,也就是master thread 每秒写到redo file中,然后由系统自行刷新到硬盘
    break;
    case 1:
    /* Write the log and optionally flush it to disk */
    log_write_up_to(lsn, LOG_WAIT_ONE_GROUP,
    srv_unix_file_flush_method != SRV_UNIX_NOSYNC);
    SRV_UNIX_NOSYNC, /*< do not flush after writing */ (可见这里刷新文件的方法不是这种模式 只写并不刷新)
    SRV_UNIX_LITTLESYNC, /*(这里是调用方法)< do not call os_file_flush(when writing data files, but do flush after writing to log files */
    break;
    case 2:
    /* Write the log but do not flush it to disk */
    log_write_up_to(lsn, LOG_WAIT_ONE_GROUP, FALSE);
    //在这里 srv_unix_file_flush_method=SRV_UNIX_NOSYNC

    break;
    default:
    ut_error;
    }
    }
    }
    总结: mysql使用了枚举类型定义了不同的动作种类,然后通过switch case进行判断执行某些动作,核心变量 srv_unix_file_flush_method
    文章源码来源参考: https://blog.csdn.net/innobase/article/details/51302145

  • 相关阅读:
    PHP 函数大集合
    PHP 单词集合
    PHP 常用函数集合
    Linux 服务器中搭建环境
    windows下cmd中命令操作
    TP中的AJAX返回ajaxReturn()
    PHP面试题
    CI表单验证
    CI数据库操作_查询构造器类
    react 的核心思想 【声名式】Declarative 的理解
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/13322339.html
Copyright © 2011-2022 走看看