2020-11-07-Mysql(优化基础)

2020-11-20  本文已影响0人  冰菓_

1.三大范式

image.png image.png

2.explain

(索引)


image.png

(哪些情况用索引)


image.png

(id 注意如果有虚拟表则虚拟表的后面的数字是id号)


image.png

(select_type)


image.png

(type)


image.png

(是否用到了索引)


image.png image.png image.png image.png

(extra)


image.png

3.索引优化

image.png
image.png

4.为什么不建议用select * ?

假设某一天修改了表结构,如果用select *,返回的数据必然会会变化,客户端
是否对数据库变化作适配,是否所有地方都做了适配,这都是问题。
可能会存在不需要的列,传输过程中有不必要的性能损耗;
客户端解析查询结果也需要更多损耗

5.例题

使用了select ,必然导致数据库需要先解析代表哪写字段,从数据字段中将*转化为具体的字段含义,存在性能开销;
由于覆盖索引我们可能只要获取索引,select * 增加了不必要的io流

image.png

6.order by

image.png

7.锁理论

image.png

脏读 :
读取到了未提交的数据(如果事务这时候回滚了,那么第二个事务就读到了脏数据)

不可重复读
重点是修改:在同一事务中,同样的条件,第一次读的数据和第二次读的数据不一样。(一个事务多次读取同一范围内数据时,另外一个事务发生insert操作并提交了)。数据变化。

幻读
重点在于新增或者删除:在同一事务中,同样的条件,,第一次和第二次读出来的记录数不一样。(一个事务多次读取同一条数据时,另外一个发生了事务发生update,delete操作并提交了。insert操作一条新数据并不会影响刚才被读的那条数据。)。行数变化。

(读取数据一致性的描述)


image.png image.png

(锁住行)


image.png image.png
上一篇下一篇

猜你喜欢

热点阅读