其乐融融的IT技术小站

标签:Innodb

MySQL

MySQL的可重复读隔离级别和MVCC机制是什么关系,又是如何解决“幻读”问题的?

1

其乐融融 发布于 2024/03/11 01:33:05

产生幻读的原因是,行锁只能锁住行,但是新插入记录这个动作,要更新的是记录之间的“间隙”。因此,为了解决幻读问题,InnoDB 只好引入新的锁,也就是间隙锁 (Gap Lock),间隙锁是在可重复读隔离级别下才会生效的。

阅读()评论(0)赞 ()

MySQL

MySQL:InnoDB的页合并与页分裂到底是什么

12

其乐融融 发布于 2024/01/08 01:33:14

不管是页分裂还是页合并,InnoDB都会在索引树上加写锁(x-latch)。在操作频繁的系统中这会是在隐患,可能会导致索引的锁竞争(index latch contention)。如果表中没有合并和分裂操作(也就是写操作),称之为“乐观(optimistic)”更新,只需要使用读锁(S)。带有合并或者分裂的操作称之为“悲观(pessimistic)”更新,使用写锁(X)。​

阅读()评论(0)赞 ()

MySQL

MySQL Repeatable-Read 实现的一些误解

0

其乐融融 发布于 2023/12/14 01:33:35

对于 first-committer-wins 的定义, 在si 模式下, 如果在Start-Timestamp -> Commit-Timestamp 这之间如果有其他的trx2 修改了当前trx1 修改过的内容, 并且在trx1 提交的时候, trx2 已经提交了. 那么trx1 就会abort, 这个叫first-committer-wins。

阅读()评论(0)赞 ()

MySQL

MySQL 的 NULL 值是怎么存放的?

12

其乐融融 发布于 2023/10/30 01:33:36

InnoDB是一个将数据存储到磁盘上的存储引擎,所以就算我们关闭、重启服务器,数据还是存在的。而在真正处理数据的时候是在内存中进行的,所以需要把磁盘中的内容加载到内存中。

阅读()评论(0)赞 ()

MySQL

Explain 显示 Count(*) 使用了索引,实际却是全表扫描

5

其乐融融 发布于 2023/07/11 03:20:16

从 8.0.17(含)版本开始,直到目前的最新版本(8.0.33),如果表中有二级索引,explain 输出的执行计划也表示会使用二级索引,然而,实际执行过程中,InnoDB 却会强制进行全表扫描,以使用主键索引的并行扫描能力。

阅读()评论(0)赞 ()

MySQL

InnoDB为什么不用跳表,Redis为什么不用B+树?

1

其乐融融 发布于 2023/06/24 03:20:03

Innodb是MySQL的执行引擎,MySQL是一种关系型数据库,而Redis是一种非关系型数据库。这两者之间比较大的区别是:关系型数据库以表的形式进行存储数据,而非关系型数据库以Key-value的形式存储数据。

阅读()评论(0)赞 ()

SQL Server

不能再简单的意向锁

8

其乐融融 发布于 2023/06/20 03:10:28

为了使多粒度级别的锁定变得实用,InnoDB 使用了意向锁,注意,意向锁是一种表级锁,它表示事务稍后对表中的行需要哪种类型的锁(共享或独占)。

阅读()评论(0)赞 ()