MySQL技术内幕
2019-09-03 11:11:13 0 举报
AI智能生成
MySQL技术内幕,关键知识点分享
作者其他创作
大纲/内容
1.Mysql体系结构
连接池组件
管理服务和工具组件
SQL接口组件
查询分析器组件
优化器组件
缓冲组件
插件式存储引擎(基于表)
物理文件
2.InnoDB存储引擎
InnoDB关键特性
插入缓冲insert buffer
1.0.x change buffer
insert buffer
delete buffer
purge buffer
内部实现
两次写double write
自适应hash索引adaptive hash index
异步IO
刷新临界页
存储引擎特点
版本5.5.8后,默认存储引擎
MVCC多版本并发控制
MRR
ICP
默认Repeatable事务隔离级别
使用next-key locking避免幻读
预读read ahead
计算机理论
聚簇方式方式存储,无显性主键则生成6字节的ROWID
checkpoint机制
缩短数据库的恢复时间
缓冲池不够时,刷新脏页到磁盘
重做日志不可用时,刷新脏页
InnoDB体系结构
后台线程
主线程master thread
IO thread
4种io thread
innodb_read(write)_io_threads
purge thread
page cleaner thread
内存
缓冲池innodb_buffer_pool_size
可以设置多个实例instance
存储的数据包括
索引页
数据页
undo页
插入缓冲
自适应哈希索引
innodb存储的锁信息
数据字典信息
数据结构:
Free List
管理空闲页,使用时从该处获取并摘除
LRU List
midpoint机制优化
innodb_old_blocks_pct
innodb_lod_blocks_time
为什么不采用朴素的LRU算法?
Flush List
脏页列表,脏页存在于LRU,Flush中
重做日志缓冲redo_log_buffer_size;8MB
刷新到重做日志文件时机
Master Thread每秒
事务提交
重做日志换冲池剩余空间小于1/2
额外内存池innodb_additional_mem_pool_size
innodb recovery
3.文件
参数文件
日志文件
错误日志log_error
慢查询日志slow log
查询日志query log
二进制日志binary log
二进制日志格式
套接字文件
pid文件
表结构定义文件
frm后缀文件
frm同样可以存放视图的定义
Innodb存储引擎文件
表空间文件tablespace
共享表空间
独立表空间
重做日志文件
至少一个重做日志文件组
组内日志文件(默认3个)循环写入
日志条目结构
写入触发机制
innodb_flush_at_trx_commit
4.表组成元素
表空间tablespace
共享表空间与独立表空间的区别?
段segment
数据段
索引段
回滚段
簇extent
连续的64个页
一个区的大小是1MB
一次从磁盘申请4~5个区
页page
InnoDB磁盘管理的最小单位:16KB
页类型
页数据结构
file header
page header
infimum+supermun record
user records
free space
page directory
file trailer
记录行record
最多可存放16kb/2-200=7992行
为什么最少存放2行记录?
行记录格式row_format
Compact
Redundant
行溢出数据
5.索引与算法
算法
hash算法
红黑树
平衡二叉树
二分查找
B+树
插入过程
删除过程
检索过程
orderby groupby 过程
索引
索引分类
聚集索引
辅助索引
联合索引
覆盖索引
唯一索引
普通索引
全文索引
主键索引
索引提示Index Hint
Cardinality值
ICP优化
Multi-Range Read
6.锁
锁的类型
共享锁
排他锁
意向锁
意向共享锁
意向排他锁
一致性非锁定读
一致性锁定读
select ... for update
select ... lock in share mode
行锁的算法
Record Lock
Gap Lock
Next-key Lock
锁的问题
脏读|丢失更新
读未提交数据
不可重复读
update,delete
幻读
insert
死锁
锁升级
InnoDB不存在
锁信息存储方式
7.事务
隔离级别
RU
RC
RR
Serial
事务特性ACID
事务分类
扁平事务
带保存点的扁平事务
链事务
嵌套事务
分布式事务
2XA
3XA
TCC
分布式消息
实现原理
redo log
undo log
purge
group commit
事务控制语句
8.其他
常用命令
show engine innodb status;
show variable like '';
MyISAM存储引擎特点
不支持事务
表锁设计
支持全文索引
版本更新特点
故障排查&问题分析
线上SQL优化
0 条评论
下一页