随着理解的深度和广度的增加后续不断更新…
1.索引
定义: 是对数据库表中一列或者多列的值进行排序的一种结构,使用索引能快速的访问数据表中对应的信息。
索引的底层数据结构:innodb和myisam底层使用的B+树存储索引。
B+树:非叶子结点只存索引值和指针,不存储数据。
B树:非叶子结点不仅存储索引值还存储数据。
多路查找树(B+,B)和其他的二叉树进行对比分析:
同样的数据量多路查找树的高度更加低,而且节点数也会更少。这样又两个好处1、查找的时间复杂度降低(高度低)。2、节点减少,磁盘I/O次数减少,节省I/O时间。
B树和B+树的对比:
1、B+树的所有数据都在最后一层的叶子节点里面,B树的数据在每个结点中,所以B+树查询性能更加稳定,直接到最后一层找。
2、B+树非叶子节点中没有存数据,B树非叶子节点中存了数据,B+树的非叶子节点结点占用的空间小,同样空间大小,磁盘单次I/O读取的B+树结点数量就要多,也就是说前者节省磁盘I/O时间。
3.B+树的叶子节点存在一个指针指向下一个非叶子节点,而且还是有序的,所以说B+树存储索引更加的适合范围查找。
**聚簇索引:**也称主键索引,索引树中的叶子结点存的是整行数据。(一张表中只能有一个主键索引)
**非聚簇索引:**也称普通索引,索引树中的叶子结点存储的是对应的主键索引的值。利用普通索引查询数据的过程是先找到对应的主键索引,然后根据查出来的主键索引去查询数据。
2.事务
数据库事务ACID:
原子性: 一个事务中的所有操作,要么全部执行,要么就全部都不执行。
一致性: 事务执行之前和执行完成之后,数据由一个一致性状态转换到另一个一致性状态。类似于银行转账。
隔离性: 事务之间是相互隔离的,一个事务的执行不能影响到其他事务的执行。
持久性: 一旦事务提交,对数据库的修