According to the crash recovery logic of mysql server, we only need to write/sync prepared transaction before writing to binlog. And currently transactions are not grouped during innodb prepare stage.
I changed the related code described as bellow:
don’t sync redo log during innodb prepare stage if binlog enabled.
during flush stage of group commit (In function process_flush_stage_queue)
a) collect group commit queue
b) call ha_flush_logs to sync redo log (make sure all redo log of prepared transaction in current
queue were synced before writing to binlog)
--innobase_flush_logs have to be changed.
c) flush thread cache to binlog file for every thd in queue
关于mysql redo log的问题。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 一码归一码@ 2023-12-06 11:59关注
重做日志,存储已提交事务的数据,保证在出现机器故障时对已提交事务数据不丢失从而持久化,Mysql操作数据都是会将数据所在的那一页数据加载到缓存池中的,操作也是操作缓存池中的数据,操作完后不会立即刷新到磁盘,而是会将数据写入redo log中,至于缓存池中的数据时要依靠一个随机IO的线程去将缓存池数据持久化,但在缓存池中数据未持久化这个过程中,机器发生故障,就会导致缓存池数据丢失,所以才引入了read log。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 C++为什么这个代码没报错运行不出来啊
- ¥15 第一行输入n,第二行输入a b c输出的字符向后平移n个位置,当移动到z时,重新返回a开始
- ¥15 为什么跑这个代码,文件显示不在呀
- ¥15 一道ban了很多东西的pyjail题
- ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
- ¥15 C++识别堆叠物体异常
- ¥15 微软硬件驱动认证账号申请
- ¥15 GPT写作提示指令词
- ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
- ¥20 关于DAC输出1.000V对分辨率和精度的要求