码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Mysql 45讲学习笔记(二十三)MYSQL怎么保证数据不丢


    一.binlog的写入机制

       执行逻辑:

    • 事务执行过程中,先把日志写到binlog cache,
    • 事务提交的时候再把binlog cache写到binlog文件中

      binlog cache

    • 系统binlog cache分配了一片内存,每个线程一个
    • 参数binlog_cache_size用于控制单个线程内binlog cache所占内存的大小
    • 如果超过了这个参数规定的大小,就要暂存到磁盘

    事务提交时:

    • 执行器把binlog cache里的完整事务写入binlog中,并清空binlog cache 

    二.Redo log的写入机制

    redo log的三种状态:

         

    • 存在redo log buffer中,物理上是在MySQL进程内存中
    • 写在磁盘(write),但没有持久化(fsync),物理上是在文件系统的page cache里面
    • 持久化到磁盘,对应的是hard disk

    存在问题:

         日志写到redo log buffer 是很快的,write到page cache也差不多,但是持久化到磁盘的速度很慢

       innodb_flush_log_at_trx_commit 参数

    0表示每次提交事务都把redo log留在redo log buffer中
    1表示每次事务提交时都将redo log 直接持久化到磁盘
    2

    表示每次事务提交时都只把redo log写到page cache

    • InnoDB有一个后台 线程,每隔1秒,就会把redo log buffer中的日志,调用write写到文件系统的page cache,然后调fsync 持久化到磁盘
    • 事务执行中间过程的redo log也是直接写在redo log buffer中的
    • 也可能被后台线程一起持久化到磁盘中。
    • 一个没有提交的事务的redo log可能已经持久化到磁盘。

    三.没提交的redo log写入磁盘的两个场景:

    1. redo log buffer占用的空间即将达到innodb_log_buffer_size一半的时候,后台线程会主动写盘
    2. 并行事务提交的时候,顺带将这个事务的redo log buffer 持久化到磁盘

    两阶段提交:

        时序上redo log先prepare再写binlog最后再把redo log commit

    组提交(group commit)机制

  • 相关阅读:
    L54.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- umount和df
    JS实例:网页特效-自动刷新页面
    基于SpringBoot的车辆充电桩管理系统
    Linux下Minio分布式存储安装配置(图文详细)
    Mybatis基础支持层-反射模块:ObjectFactory/Property工具类
    【HMS core】【FAQ】HMS Toolkit典型问题合集1
    IP-guard Webserver view 远程命令执行漏洞【2023最新漏洞】
    vs中pygame窗口不显示
    ORB-SLAM2解读MapPointCulling
    Python实现并测试K-means聚类算法
  • 原文地址:https://blog.csdn.net/weixin_42369687/article/details/126030908
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号