数据库
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
<br>
变种
当页面访问的时候 缓存到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 条评论
下一页