数据库
2025-10-30 22:19:45 0 举报
AI智能生成
数据库
作者其他创作
大纲/内容
数据库
语句
DQL
DML
DDL
DCL
TCL
非关系型数据库区别
关系型数据库用表维护数据 格式一直 用sql
关系型都是表结构 灵活性差 操作海量数据性能差
性能差 但是可以做复杂查询 一对一一对多
Mysql
基本架构
连接器
负责链接相关的配置
show status like "Thread%"
子主题
show full processList
子主题
kill QUERY processId
max_coinnections
max_execution_time
查询最大执行时间
解析器
解析sql的语法 负责判断我们的sql的语法及后续的权限检测
预处理
通过预处理来解决sql注入 减少解析次数来提升性能
优化器
要不要走索引 怎么走索引
执行器
跟存储引擎交互, 返回用户想要的数据
子主题
类型
Innodb
事务
Mysam
性能高一点 无事务
Memory
内存
Innodb
BufferPool
默认128m
子主题
预读机制
内存管理
LRF
变种
当页面访问的时候 缓存到bufferpool。 放oldlist 放预读页
子主题
old里的页面再次被访问的时候放 newList的头部
newlist的数据会随着新加的数据往后移 淘汰oldlist tail
LFU
page
内存与磁盘的交互的最小单位
表里有 1 2 3 4 5 6 7的数据 查=id=2
拿到id = 2 的时候
其他1234567也拿到了 因为在同一page
默认16k
extent区
64个page
innodb刷盘模式
异步刷脏机制
脏页自适应
脏页的数量低于特定百分比
10%
PCT内存中脏页的最大占比
90%
Redolog自适应
空闲时间刷新
异步线程空闲就触发刷新
默认刷新100%脏页数据
double write
一个页有16k 但是和操作系统交互只有4k 所以需要备份
changebuffer
只针对二级索引的页
change_buffer_max_size 默认85%
Redo log
格式
type
操作类型
spaceid
磁盘的spaceid
pagenumber
磁盘的pagenumber
data
操作的前后数据
物理分配
目录下32个文件
_tmp结尾
是 未写数据
否 已写数据
循环写
顺序写Redolog 比 page随机写快
就一条数据 格式小
索引
通过某些特定的列 快速的去找到某些行
create index on table(column_name)
必问问题
clusteredIndex
主键索引
SecondaryIndex
二级索引
不会有完整数据 只会有索引字段和clusteredIndex字段
回表
先查非主键索引获取主键 然后区主键索引查询数据
索引下推
二级索引
联合索引中如何包含了数据可以在在二级索引中直接操作 不用回表到一级索引
B+树
一页多条数据 且有序 单链表
叶子节点 页与页之间双向链表
非叶子节点 为目录
没有完整数据
可存数据多
0 条评论
下一页