首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

#事务

MySQL 核心模块揭秘 | 32 期 | 插入记录,主键索引冲突加什么锁?

爱可生开源社区

如果表中 <id = 10> 的记录已经被其它已提交事务标记删除,只是还没有被清理,它就不是有效的记录了。这种情况下,新记录可以正常插入,不会报错。

8510

MySQL 核心模块揭秘 | 31 期 | 隐式锁

爱可生开源社区

找到主键索引记录之后,从它的 DB_TRX_ID 字段中读取事务 ID,看看这个事务 ID 对应的事务是否已经提交了。

5010

OB 运维 | OBOracle 竟然可以使用 Repeatable Read?

爱可生开源社区

在 OceanBase 中,只读事务中的所有查询都引用了数据库的同一份快照,从而提供多表、多查询、读取一致的视图。所以在只读事务内 2 次相同查询所看到的数据是...

9010

MySQL 核心模块揭秘 | 30 期 | 死锁日志详解

爱可生开源社区

介绍完死锁环中每个事务的三部分信息,接下来的辅助信息很重要,就是哪个事务被选择成为死锁受害事务了。

6410

MySQL 核心模块揭秘 | 29 期 | 授予锁

爱可生开源社区

事务申请加表锁或者行锁,有可能立即获得锁,也有可能被其它事务持有的锁阻塞,需要先进入锁等待状态,等其它事务释放表锁或者行锁之后,申请加锁的事务才能获得锁。

8410

MySQL 核心模块揭秘 | 28 期 | 什么时候释放锁?

爱可生开源社区

有一种情况,加锁只是权宜之计,临时为之。如果这种锁也要等到事务提交或者回滚即将完成时才释放,阻塞其它事务的时间也可能更长,这就有点不合理了。所以,这种锁会在事务...

3010

MySQL 核心模块揭秘 | 27 期 | 死锁(3)解决死锁

爱可生开源社区

因为死锁数组中各事务已经按照进入锁等待状态的时间先后排了序,这一步直接把本轮循环取到的事务作为本轮循环的受害事务,其实隐含了一个逻辑,就是选择两个事务中更晚进入...

6710

技术分享 | MySQL 备库可以设置 sync_binlog 非 1 吗?

爱可生开源社区

反之如果由 Executed_Gtid_Set 决定,则备库复制会因为重复回放事务而报错,需要进行修复。下面设计一个实验来进行验证。

8910

MySQL 核心模块揭秘 | 26 期 | 死锁(2)发现死锁

爱可生开源社区

第 3 步,第 1 轮循环从事务 1 等待事务 2 开始,这里又发现事务 2 在等待事务 1,说明这两个事务相互等待形成了一个环,也就是死锁环。

6410

故障分析 | MySQL 主从切换后数据不一致了?

爱可生开源社区

(4)通过 mysqlbinlog -vvvv binlogs.xx --include-gtids=xx 解析这个多出的 GTID。发现该事务涉及的表和复制中...

8410

MySQL 核心模块揭秘 | 25 期 | 死锁(1)准备工作

爱可生开源社区

因为事务 X 进入锁等待状态之后,又有 2N 个事务进入过锁等待状态,而当前只有 N 个事务正处于锁等待状态,说明这 2N 个锁等待事务中,已经有 N 个事务获...

8010

MySQL 核心模块揭秘 | 23 期 | 锁等待

爱可生开源社区

多个事务对同一个表加表锁,每个事务都会申请一个表锁结构。这些表锁结构通过各自的 locks 属性形成一个链表,我们称之为 locks 链表。

6810

MySQL 核心模块揭秘 | 22 期 | 行锁 (2) 慢速加锁

爱可生开源社区

第 3 步,如果事务 T1 是高优先级事务,创建 hash 行锁结构的事务不是高优先级事务,并且 hash 行锁结构处于等待状态,它就不会阻塞事务 T1 对记录...

6710

故障分析 | BenchmarkSQL 对 MySQL 测试时请注意隔离级别!

爱可生开源社区

可以看到确实出现了重复 DELETE FROM 和 SELECT 的情况,再往前多看几个事务,你会发现前几个事务均对 2102 这条记录进行了 DELETE 的...

6410

MySQL 核心模块揭秘 | 21 期 | 行锁 (1) 快速加锁

爱可生开源社区

多个事务读、写同一个数组单元管理的行锁结构链表,需要等待前面拿到令牌的事务把令牌还回去之后,等待中的事务才能按照先来后到的顺序拿到令牌。

7810

MySQL 核心模块揭秘 | 20 期 | 怎么加表锁?

爱可生开源社区

如果多个事务同一时间都想拿到同一个表的令牌,需要按照先来后到的顺序排队,等前面拿到令牌的事务把令牌还回去之后,剩下的排队事务中,最早排队的那个事务就能拿到令牌,...

7010

技术分享 | 原来 pt-osc 改表是这样实现的!原理详解【附场景案例】

爱可生开源社区

那么 DELETE + REPLACE 和 DELETE + INSERT 为什么选择前者呢?这两个操作放在一个事务里面的话,最终 binlog 记录的是一样的...

5710

MySQL 核心模块揭秘 | 19 期 | 锁模块里有什么?什么样?

爱可生开源社区

如果 rollback_complete = false,说明从 undo 日志中恢复出来的、需要回滚的事务还没有全部回滚完成,InnoDB 会遍历读写事务链表...

6610

MySQL 核心模块揭秘 | 18 期 | 锁在内存里长什么样?

爱可生开源社区

首先,插入意向锁的加锁场景,是事务 T 想要在某条记录前面的间隙插入一条记录,而这个间隙被其它事务加了间隙锁或者 Next-Key 锁,导致事务 T 必须在这个...

6010

从零开始学PostgreSQL (十四):高级功能

DBA实战

PostgreSQL是一个强大且开源的关系型数据库管理系统,以其稳定性、功能丰富性和对SQL标准的广泛支持而闻名。它不仅提供了传统的关系型数据库功能,如事务处理...

7210
领券