文章目录
1.事务四大特性
相关链接
(https://blog.youkuaiyun.com/cr_lzy/article/details/94992490)
1.原子性,要么执行,要么不执行
2.隔离性,所有操作全部执行完以前其他会话不能看到过程
3.一致性,事物前后,数据总额一致
4.持久性,一旦事物提交,对数据的改变是永久的
2.数据库隔离级别
多个事务读可能会出现以下问题
1.脏读:事务B读取事务A还没有提交的数据
2.不可重复读:,一行被检索两次,并且该行中的值在不同的读取之间不同时
3.幻读:当在事务处理过程中执行两个相同的查询,并且第二个查询返回的行集合与第一个查询不同时
这两个区别在于,不可重复读重点在一行,幻读的重点 ,返回 的集合不一样
3.MYSQL的两种存储引擎区别(事务、锁级别等等),各自的适用场景
4.索引有B+索引和hash索引
5.聚集索引和非聚集索引
6.索引的优缺点,什么时候使用索引,什么时候不能使用索引
1.索引最大的好吃是提高查询速度
2.缺点是更新数据时效率低,因为要同时更新索引
3.对数据进行频繁查询建议用索引,如果频繁更改数据不建议使用索引
7.InnoDB索引和MyISAM索引的区别
8.索引的底层实现(B+树,为何不采用红黑树,B树)重点
树 | 区别 |
---|---|
红黑树 | 增加,删除,红黑树会进行频繁的调整,来保证红黑树的性质,浪费时间 |
B树也就是B-树 | B树,查询性能不稳定 |
B+树 | B+树相对于另外两种树,显得更矮更宽,查询层次更浅 |
9.B+树的实现
10.为什么使用B+Tree
索引查找过程中就要产生磁盘I/O消耗,主要看IO次数,和磁盘存取原理有关。
根据B-Tree的定义,可知检索一次最多需要访问h个节点。数据库系统的设计者巧妙利用了磁盘预读原理,
将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入
局部性原理与磁盘预读
11.Sql的优化
sql尽量使用索引,而且查询要走索引
子查询变成left join
limit 分布优化,先利用ID定位,再分页
or条件优化,多个or条件可以用union all对结果进行合并(union all结果可能重复)
不必要的排序
where代替having,having 检索完所有记录,才进行过滤
避免嵌套查询
对多个字段进行等值查询时,联合索引