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)
为什么Mysql隔离级别默认是RR?
数据库默认隔离级别
存在问题:幻读
可重复读(RR)
存在问题:性能低下
串行化(S)
事务隔离级别
min_id
max_id
cur_trx_id
active_id_list
readview
RC和RR级别ReadView生成时机
MVCC
当前读
快照读
一次更新事务流程
事务
刷盘策略
binlog
undolog
刷盘时机
redolog
主从才会有
relaylog
MySQL日志
free链表
LRU链表
fluash链表
buffer pool(缓存池)
整个Buffer pool从初始化,到运行,到刷盘流程?
经过TCP三次握手
1、连接器
8.0已经删除
K-V结构 key是SQL语句 value是结果
2、查询缓存
语法分析
词法分析
3、解析器
预处理器
优化器
执行器
预处理阶段
优化阶段
执行阶段
4、执行计划
SQL流程
8.0默认存储引擎
InnoDB
5.5之前默认引擎
MyISAM
MEMORY
存储引擎
数据跟索引分开存储
叶子节点包含字段值和指向数据页对应的数据行的地址的指针
非聚簇索引
数据和索引放到了一起
非叶子节点上存储的索引字段的值
叶子节点存储的是这条记录的整行数据
聚簇索引
B+树索引
普通索引
唯一索引
唯一性
全文索引
主键索引
索引分类
Hash
B+树
索引数据结构
回表
查询语句的执行只用从索引中就能取得,不需要回表拿数据
索引覆盖
5.6引入优化技术
索引下推
索引跳跃
索引合并
索引现象
互斥
什么会导致失效
怎么去排查失效
索引失效
最左匹配原则
ID
SIMPLE 简单表
PRIMARY主查询
第一个查询是派生表
UNION连接的两个select查询
subquery
select_type
当前操作所涉及的表
table
当前操作所涉及的分区
partitions
ALL
Index
range
ref
eq_ref
const
表示查询所使用的索引类型
type
表示可能被查询优化器选择使用的索引
possible_keys
表示查询优化器选择使用的索引
key
索引长度
key_len
那些列或常量被用来与key列中命名的索引比较
需要扫描的行数
rows
过滤掉行数占扫描行数的百分比
filtered
Using index
Using filesort
Using temporary
Using where
Using index condition
Using Where ;Using index
Using join buffer
表示额外信息
Extra
没走:ALL
理想:ref、eq_ref、range、const
Type
没走:NUll
理想:一定要有值
没走:Using where
理想:NULL、Using index、using index condition
extra
判断SQL走没走索引
EXPLAIN
扫描区间
每一个节点都是一个数据页,默认16K
空间代价
页分裂
页回收
增删改查导致索引需要维护
每个查询语句都需要生成一个执行计划,计算不同索引成本太多影响分析过程从而影响性能
时间代价
索引越多越好?
思考
索引
锁表
无索引
通过索引加锁
有索引
获得排他锁事务可读可写
Select .... for updata
排他锁(写锁)
获取共享锁的事务智能读取数据,不能修改
Select .... Lock in share mode
共享锁(读锁)
意向共享锁
意向排他锁
意向锁
意向锁是个表级锁,并且他会在触发意向锁的事务提交或者回滚后释放
version版本号
CAS机制
乐观锁
通过排他锁for updata来进行加锁
关闭自动提交
悲观锁
MySQL锁
乐观锁,适用于读操作频繁,写操作相对较少,需要掌握粒度
悲观锁,适用于写操作比较平凡,并且并发写入的概率较高的场景
如何选择?
基本思想假设冲突很少发生
基本思想假设冲突经常发生
高并发场景下如何抉择?
总结回答时候需要搞清楚场景,想象场景下,是写多还是读多
MySQL8.x
MySQL5.x
MySQL版本
MySQL5.x和8.0之间的区别?
主从复制
组提交
库级别
WRITESET
并行复制
Mysql主从
MySQL
0 条评论
回复 删除
下一页