MYSQL
2023-06-08 17:40:14 6 举报
AI智能生成
MYSQL脑图梳理
作者其他创作
大纲/内容
架构
关系型数据库
DQL
数据查询语言
DDL
数据定义语言
DML
数据操纵语言
DCL
数据控制语言
系统库
information_schema
performance_schema
线程配置
Threads_cached
Threads_connected
Threads_created
Threads_running
SHOW FULL PROCESSLIST
链接
同步
长链接
链接数:max_connections:151
超时时间:waittimeout
结构
1查询缓存(默认关闭)
语法解析和预处理
词法解析
语法解析
PREPARE
提高性能
防止SQL注入
优化器
优化成本模型
控制查询计划评估
optimizer_prune_level变量
optimizer_search_depth变量
Switchable Optimizations:可切换优化
Index Hints:索引提示
执行计划
EXPLAIN
执行器
存储引擎
表类型
InnoDB
MYISAM
空间占有小
表锁
分层
连接层
服务层
存储层
磁盘数据
预读取
page
16K
缓存池 buffer pool
刷脏(异步)
随机IO/顺序IO
REDO LOG
物理
UNDO LOG
逻辑
InnDB架构
内存结构
buffer pool
LRU
change buffer
redo log buffer
磁盘结构
系统表空间
内存与磁盘交互机制
页面加载机制
数据读取
预读机制
线性预读
随机预读
数据同步机制
页
脏页
已改动还没同步
空白页
没使用
干净页
未改动
FUlsh链表
创建一个存储脏页的链表,凡是被修改过的缓冲页对应的控制块都会作为节点加入到这个链表中。该链表也被称为flush链表。
刷脏
时机
正常关闭
系统任务空闲时
redolog自适应
双写缓存
缘由:异步刷盘时出问题进行备份
双写缓存区:脏页写入缓存池时也要写到双写缓存区
索引
B+结构
B+ 树的阶数等于键值数量
树的叶子节点中的索引数据是按顺序排列的
叶子节点间是通过双向链表进行连接
稳定
clustered index
默认主键
非空唯一索引
rowid(没有索引)
二级索引
单例二级索引
当前索引+主键索引排序字段
联合二级索引
最左原则
覆盖索引
查询的数据全部在二级索引树
回表
主键索引的排序字段去主键索引拿到响应的数据
不是越多越好:维护索引树,占空间
主键一定要设计趋势增加
能放多少数据
跟目录能放数据:page/根目录大小
索引失效
索引列不独立
使用了左模糊
使用or查询的部分字段没有索引
字符串条件未使用 ’ ’ 引起来
不符合最左前缀原则的查询
索引下推
作用在二级索引
索引优化
慢查
log_output
z执行计划
explain
id
SQL执行的顺序的标识
select_type
table
那张表的
type
访问类型
possible_keys
mySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用
Key
key列显示MySQL实际决定使用的键(索引)
key_len
索引中使用的字节数,可通过该列计算查询中使用的索引的长度
ref
表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
rows
表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数
Extra
包含MySQL解决查询的详细信
Using where:列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的
Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询
Using filesort:MySQL中无法利用索引完成的排序操作称为“文件排序”
COUNT
COUNT(字段)
表示的是查询符合条件的列的值不为NULL的行数
COUNT(常量)
示的是直接查询符合条件的数据库表的行数
COUNT(*)
示的是直接查询符合条件的数据库表的行数
SQL92定义
事务
使用场景
四大特性
原子性
undo log
隔离性
锁
MVCC
持久性
redo log
双写缓存
一致性
并发三大问题
幻读
在同一事务中第二读和第一次读的结果不一致读到插入的数据
脏读
其他事务读到我还没有提交的事务
不可重复读
在同一事务中第二次读和第一次读的结果不一致
事务隔离级别
RU
RC
RR
串性
MVCC
一个事务可看到的数据版本
一个事务不可看到的数据版本
一致性视图(read view)
判读规则
read view 事务ID和行的DB_TRX_ID进行比较
RR是第一次建立
RC每次都建立
innodb行标识
DB_ROW_ID:行标识
DB_TRX_ID:更改最后的事务id
锁
行锁/表锁
粒度
效率
冲突概率
并发性能
行锁
共享锁
S/读锁
排他锁
X/写锁
意向锁
表锁
研究意义
锁范围
记录锁
间隙锁
索引的已有数据决定加锁范围
临间锁
一致性读取
非锁定一致性读取
锁定一致性读取
锁的是索引
FULL_PROCESSLIST
threads
0 条评论
下一页