一、MVCC多版本并发控制
MVCC,多版本并发控制是现代数据库引擎中常用的处理读写冲突的手段,目的在于提高数据库高并发场景下的吞吐性能。(可以用来解决可重复读的问题)
二、数据库ACID实现原理
MYSQL通过支持ACID原理来保证事务的可靠性和一致性。
****原子性(Atomicity):即不可分割性,事务要么全部被执行,要么就全部不被执行。
****一致性(Consistency):事务的执行使得数据库从一种一致性状态转移到另一种一致性状态。
****隔离性(Isolation):事务在正确提交之前,不允许把该事务对数据的任何改变提供给其他任何事务。
****持久性(Durability):事务正确提交后,其结果将永久保存在数据库中,即使在数据提交后有了其他故障,事务的处理结果也会得到保存。
三、索引失效的场景
1.查询条件有or
2.like查询是以%开头
3.索引列上参与计算会导致索引失效
4.违背最左匹配原则
5.如果mysql估计全表扫描比使用索引要快,会不使用索引
四、索引
1.索引有哪些类型?
索引是帮助MYSQL高效获取数据的数据结构。
(1)普通索引:最基本的索引,没有任何限制
(2)唯一索引:与普通索引类似,不同的是索引列的值必须唯一,但是允许有空值
(3)主键索引:一种特殊的唯一索引,用于唯一标识数据表中的某一条记录,不允许有空值
(4)联合索引:多个字段上建立的索引,能够加速复合查询条件的检索
(5)全文索引:搜索数据表中字段是不是包含我们搜索的关键字,像搜索引擎中的模糊查询
五、MYSQL中为什么采用B+树?
B+树在MYSQL中具有多个优势。
首先,B+树的有序性可以提高查询范围的性能;
其次,B+树的叶子节点形成了一个有序链表,可以支持顺序遍历和范围查询;
此外,B+树内部节点不存数据,减少了存储空间的开销,同时还可以提高内存利用率;
B+树的平衡性可以保证查询的稳定和一致性,避免数据不平衡导致的性能问题。
六、B树和B+树的比较
1.B树一个节点存的是数据,B+树存储的是索引;所以B树一个节点的存储量有限,而B+树能存储很多地址;
2.B+树的叶子节点是数据阶段,用一个链表串联起来,便于范围查询。
此外,相比其他索引,如哈希索引,B+树在支持范围查询和顺序遍历方面更高效;哈希索引只能支持等值查询,而无法支持范围查询。
七、MYSQL支持的索引类型
B-Tree索引、哈希索引、空间索引、全文索引
B-Tree索引:大部分索引支持B+树索引
Hash索引:只有memory引擎支持,使用场景简单
空间索引:MyISAM支持,可以用作地理数据存储,空间索引会从所有维度来索引数据
全文索引:特殊的索引类型,查找本文关键词