31、为什么大部分RDBMS都会支持MVCC?

上一篇文章中,我们讲到了锁的划分,以及乐观锁和悲观锁的思想。今天我们就来看下MVCC,它就是采用乐观锁思想的一种方式。那么它到底有什么用呢? 我们知道事务有4个隔离级别,以及可能存在的三种异常问题,如下图所示: 在MySQL中,默认的隔离级别是可重...

30、锁:悲观锁和乐观锁是什么?

索引和锁是数据库中的两个核心知识点,不论在工作中,还是在面试中,我们都会经常跟它们打交道。之前我们已经从不同维度对索引进行了了解,比如B+树、Hash索引、页结构、缓冲池和索引原则等,了解它们的工作原理可以加深我们对索引的理解。同时在基础篇的部分中,...

29、为什么没有理想的索引?

我之前讲过页这个结构,表和索引都会存储在页中,不同的DBMS默认的页的大小是不同的,同时我们也了解到DBMS会有缓冲池的机制,在缓冲池里需要有足够多的空间,存储经常被使用到的页,尽可能减少直接的磁盘I/O操作。这种策略对SQL查询的底层执行...

28、从磁盘IO的角度理解SQL查询成本

在开始今天的内容前,我们先来回忆一下之前的内容。 数据库存储的基本单位是页,对于一棵B+树的索引来说,是先从根节点找到叶子节点,也就是先查找数据行所在的页,再将页读入到内存中,在内存中对页的记录进行查找,从而得到想要数据。你看,虽然我们想要查找的,只...

27、从数据页的角度理解B+树查询

我们之前已经了解了B+树和Hash索引的原理,这些索引结构给我们提供了高效的索引方式,不过这些索引信息以及数据记录都是保存在文件上的,确切说是存储在页结构中。 对数据库的存储结构以及页结构的底层进行了解,可以加深我们对索引运行机制的认识,从而你对索引...