MySQL
2024-04-19 14:52:08 0 举报
AI智能生成
MySQL是一种广泛使用的开源关系型数据库管理系统,支持SQL结构化查询语言。它主要用于存储和检索数据,具有高性能、高可用性、可扩展性和安全性等特点。在网站、企业和其他需要处理大量数据应用的开发中,MySQL是数据处理和存储的常用选择。MySQL文件通常以.sql为扩展名,它包含了数据库结构定义(DDL)、数据操作语句(DML)和存储过程等SQL代码。此外,MySQL也是大型数据库管理系统和云服务的基础,如Amazon RDS、Google Cloud SQL和Microsoft Azure SQL Database。
作者其他创作
大纲/内容
事务
事务隔离级别
读已提交(RC)
存在问题:不可重复读
读未提交(RU)
存在问题:脏读
可重复读(RR)
存在问题:幻读
数据库默认隔离级别
为什么Mysql隔离级别默认是RR?
串行化(S)
存在问题:性能低下
MVCC
readview
min_id
max_id
cur_trx_id
active_id_list
当前读
快照读
一次更新事务流程
MySQL日志
binlog
刷盘策略
undolog
redolog
刷盘策略
刷盘时机
relaylog
主从才会有
buffer pool(缓存池)
free链表
LRU链表
fluash链表
刷盘策略
SQL流程
1、连接器
经过TCP三次握手
2、查询缓存
8.0已经删除
K-V结构 key是SQL语句 value是结果
3、解析器
语法分析
词法分析
4、执行计划
预处理器
优化器
执行器
执行阶段
预处理阶段
优化阶段
执行阶段
存储引擎
InnoDB
8.0默认存储引擎
MyISAM
5.5之前默认引擎
MEMORY
索引
索引分类
B+树索引
非聚簇索引
数据跟索引分开存储
叶子节点包含字段值和指向数据页对应的数据行的地址的指针
聚簇索引
数据和索引放到了一起
非叶子节点上存储的索引字段的值
叶子节点存储的是这条记录的整行数据
唯一性
普通索引
唯一索引
全文索引
主键索引
索引数据结构
Hash
B+树
索引现象
回表
索引覆盖
查询语句的执行只用从索引中就能取得,不需要回表拿数据
索引下推
5.6引入优化技术
索引跳跃
索引合并
索引失效
什么会导致失效
怎么去排查失效
最左匹配原则
EXPLAIN
ID
select_type
SIMPLE 简单表
PRIMARY主查询
UNION连接的两个select查询
第一个查询是派生表
subquery
table
当前操作所涉及的表
partitions
当前操作所涉及的分区
type
表示查询所使用的索引类型
ALL
Index
range
ref
eq_ref
const
possible_keys
表示可能被查询优化器选择使用的索引
key
表示查询优化器选择使用的索引
key_len
索引长度
ref
那些列或常量被用来与key列中命名的索引比较
rows
需要扫描的行数
filtered
过滤掉行数占扫描行数的百分比
Extra
表示额外信息
Using index
Using filesort
Using temporary
Using where
Using index
Using index condition
Using Where ;Using index
Using join buffer
Using temporary
判断SQL走没走索引
Type
没走:ALL
理想:ref、eq_ref、range、const
key
没走:NUll
理想:一定要有值
extra
没走:Using where
理想:NULL、Using index、using index condition
扫描区间
全表扫描范围[-x,y]
单点扫描区间[a,a]
范围扫描区间[a,b]多个值
思考
索引越多越好?
空间代价
每一个节点都是一个数据页,默认16K
时间代价
增删改查导致索引需要维护
页分裂
页回收
每个查询语句都需要生成一个执行计划,计算不同索引成本
太多影响分析过程从而影响性能
太多影响分析过程从而影响性能
MySQL锁
排他锁(写锁)
Select .... for updata
获得排他锁事务可读可写
无索引
锁表
有索引
通过索引加锁
共享锁(读锁)
Select .... Lock in share mode
获取共享锁的事务智能读取数据,不能修改
意向锁
意向共享锁
意向排他锁
乐观锁
CAS机制
version版本号
悲观锁
关闭自动提交
通过排他锁for updata来进行加锁
MySQL版本
MySQL8.x
MySQL5.x
Mysql主从
主从复制
并行复制
组提交
库级别
WRITESET
0 条评论
下一页