
mysql
文章平均质量分 73
墨鱼的s我
这个作者很懒,什么都没留下…
展开
-
MySQL下的两阶段提交
MySQL会使用内部XA事务,内部XA事务由binlog作为协作者,存储引擎是参与者。当客户端在执行commit语句或者在自动提交的情况下,MySQL内部开启一个XA事务,分两阶段来完成XA事务的提交。事务提交后,redo log 和bin log 都需要刷新到磁盘中,但这两个刷盘是独立的逻辑,可能出现某一个成功,另一个失败的状况。所以,当redo log和bin log有一个日志持久化失败时就会导致主从环境数据不一致,这是因为。为了避免两份日志出现逻辑不一致的问题,使用两阶段提交来解决。原创 2023-09-26 15:32:43 · 197 阅读 · 0 评论 -
MySQL下的bin log
事务执行时,会先把日志写入到 binlog cache,事务提交后再把binlog cache写入到binlog文件中。MySQL给每个线程分配了一片内存用于缓存binlog。写入到page cache很快,但是执行fsync刷新到磁盘是很慢的,因此MySQL提供了sync_binlog参数控制刷新到磁盘的频率。在事务提交时,执行器把binlog cache里的完整事务写入到binlog文件,然后清空binlog cache。binlog文件记录了所有数据库表结构更改和编数据修改的日志。原创 2023-09-26 15:31:44 · 81 阅读 · 0 评论 -
InnoDB引擎下的redolog与undolog
开启事务后,InnoDB 层更新记录前,首先要记录相应的 undo log,如果是更新操作,需要把被更新的列的旧值记下来,也就是要生成一条 undo log,undo log 会写入 Buffer Pool 中的 Undo 页面。当系统崩溃时,虽然脏页数据没有持久化,但是 redo log 已经持久化,接着 MySQL 重启后,可以根据 redo log 的内容,将所有数据恢复到最新的状态。WAL 技术指的是, MySQL 的写操作并不是立刻写到磁盘上,而是先写日志,然后在合适的时间再写到磁盘上。原创 2023-09-26 15:25:49 · 79 阅读 · 0 评论 -
Mysql的多版本并发控制记录
ReadView字段:creator_trx_id、m_ids、min_trx_id、max_trx_id。mvcc的实现依赖于几个字段。原创 2023-09-26 15:22:54 · 68 阅读 · 0 评论