• 2020-10-15:mysql的双1设置是什么?


    福哥答案2020-10-15:#福大大架构师每日一题#

    [答案来自知乎:](https://www.zhihu.com/question/425704691)

    其实就是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,都设置为1就是双1设置。MySQL 默认配置就是双1配置。
    innodb_flush_log_at_trx_commit 是 innodb 引擎的配置,sync_binlog 是 MySQL 引擎上层的配置,都是控制磁盘写入策略。

    MySQL innoDB引擎在事务 commit 之后:
    1.binlog 写内存。
    2.redo log 写内存。
    3.根据这两个配置决定这两个日志是否刷盘(调用fsync)。
    4.commit完成。
    innodb_flush_log_at_trx_commit:redo log 的刷盘策略,默认为1。
    1.如果innodb_flush_log_at_trx_commit设置为0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作;
    2.如果innodb_flush_log_at_trx_commit设置为1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去;
    3.如果innodb_flush_log_at_trx_commit设置为2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

    sync_binlog:binlog 的刷盘策略,默认为0。
    如果为0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。
    sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。
    ***
    [评论](https://user.qzone.qq.com/3182319461/blog/1602716860)

  • 相关阅读:
    模拟赛20181101 雅礼 Wearry 施工 蔬菜 联盟
    模拟赛20181031 雅礼 Wearry 养花 折射 画作
    set/priority_queue的运算符重载
    set的完整用法
    最长公共上升子序列 O(n^2)
    无向图边双联通分量 tarjan 模板
    ID 迭代加深搜索 模板 埃及分数
    树上背包DP Luogu P2014 选课
    A* 第k短路
    [POJ3468]关于整数的简单题 (你想要的)树状数组区间修改区间查询
  • 原文地址:https://www.cnblogs.com/waitmoon/p/13823220.html
Copyright © 2020-2023  润新知