Bota5ky

MySQL(一):基本原理

Innodb 是如何实现事务的

Innodb 通过 Buffer Pool,LogBuffer,Redo Log,Undo Log 来实现事务,以一个 update 语句为例:

  1. Innodb 在收到一个update语句后,会先根据条件找到数据所在的页,并将该页缓存在 Buffer Pool 中
  2. 执行 update 语句,修改 Buffer Pool 中的数据,也就是内存中的数据
  3. 针对 update 语句生成一个 RedoLog 对象,并存入 LogBuffer 中
  4. 针对 update 语句生成 undolog 日志,用于事务回滚
  5. 如果事务提交,那么则把 Redolog 对象进行持久化,后续还有其他机制将 Buffer Pool 中所修改的数据页持久化到磁盘中
  6. 如果事务回滚,则利用 undolog 日志进行回滚

零时刻导致 Flyway 执行失败

运行时,历史脚本中的 Flyway 失败,因为带有时间戳的脚本没有默认值。检查本地 MySQL 环境的 sql_mode,删除NO_ZERO_DATENO_ZERO_IN_DATE

SELECT @@GLOBAL.sql_mode;
--- SET时移除NO_ZERO_DATE和NO_ZERO_IN_DATE
SET GLOBAL sql_mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
posted @   Bota5ky  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示