cpp选手备注秋招 MySQL学习笔记 day8

一.关于MySQL的知识

1.SQL中索引存在的意义,建立索引的方法

索引加快了查询,另外对于二级索引如果有需要的信息减少了回表;建立索引要在那些有区分度的信息上。

2.索引失效的5种情况

使用函数、索引列计算、like开头的%、隐式类型转换、覆盖索引不符合最左匹配原则

3.MySQL支持的四种隔离级别以及原理

读未提交、读提交、可重复读、串行化

不解决任何问题,解决脏读,解决不可重复读,几乎解决所有问题

mvcc可以使得读提交保证,加上next key lock

4.MySQL的原子性是怎么实现的

原子性是指事务要么全部成功要么全部失败,通过undo log和回滚实现的。

5.关于覆盖索引的知识

覆盖索引的等值操作可以一直利用索引,而范围操作前面可以,自己也可以,后面就不能利用索引

6.聚簇索引和二级索引

二级索引的索引节点往往存储的是不完整的信息比如主键,而聚簇索引除了存储索引还存储了完整的数据

建立多个索引会在MySQL中形成多个独立的b+树

7.为什么使用b+树而不是红黑树,哈希索引这些?

因为b+树的叶子节点存储数据,非叶子节点存储索引,树的层数低,可以减少磁盘IO;另外叶子节点存储数据适合按页读取;b+树叶子节点之间用指针链接,便于范围查询。

8.MySQL常见的存储引擎

innodb和mylsam

9.undo log redo log和bin log

前者保证原子性,后面两个确保写入的持久性,两阶段写。

总结,对于优化SQL语句要从联合索引这些角度去考虑

相关推荐
AI直播技术杂谈1 小时前
本周技术笔记:直播推流的心跳检测与断线重连逻辑
笔记
Aision_2 小时前
代码安全学习手记(二):SCA 软件成分分析原理与 OWASP Dependency-Check 集成实战
运维·人工智能·学习·安全·web安全·网络安全
是隼人2 小时前
buuctf-pwn bjdctf_2020_babystack2题解 整数溢出(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
KhalilRuan3 小时前
UnityCsReference——笔记
java·开发语言·笔记
电子云与长程纠缠3 小时前
UE5 Lyra PocketWorld进行3D内容UI预览 - 上
开发语言·学习·3d·ue5·游戏引擎
shangwen1233 小时前
食品厂无尘车间装修施工工艺笔记:C型钢吊顶加固方案尚文净化
笔记
210Brian3 小时前
STM32学习笔记(六)EXTI外部中断(下)
笔记·stm32·学习
MartinYeung53 小时前
[论文学习]Latent Fusion Jailbreak: 融合有害与无害表征以诱导大语言模型产生不安全输出
学习·安全·语言模型
星恒随风3 小时前
C++ 哈希详解(二):开放定址、哈希桶与 C++ 哈希表底层实现
c++·笔记·学习·哈希算法·散列表