mysql体系结构和存储引擎

概念

数据库:存储数据的文件集合,静态概念
实例:一个提供数据读写服务的进程
集群模式下数据和和实例是一对多的关系

conf文件

mysql --help

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

架构

  • connection pool
  • sql & cache
  • engine
  • filesystem

主键

物理存储是按照主键来顺序排列的,没有定义主键mysql就自动生成6字节的rowid当主键

后台线程

master thread

脏页刷新
合并插入缓冲
undo回收

io thread

aio 读写回调线程

purge thread

清理undo

page cleaner thread

脏页

innodb_buffer_pool

缓存数据

  • 数据
  • 索引
  • undo(只存在与内存,不写到文件,undo记录历史数据,MVCC的一部分)
  • redo
  • 插入缓冲
  • 自适应hash

lru

innodb_old_blocks_pct
buffer按照lru链表来组合,但是刚读入的页只会插入midpoint后的链表,避免扫描场景冲掉大部分缓存, midpoint之前的是按照活跃程度排的
innodb_old_blocks_time决定什么时候插入lru的前半部分

check point

  • 缩短数据库恢复时间,只需要检查check point之后的redo log
  • 缓冲池不够用时刷新缓冲池
  • 重做日志太多时候刷到磁盘

change buffer(insert/delete/purge buffer)

对于非唯一的二级索引,不会立即更新,而是写到change buffer然后一次写入二级索引页

double write buffer

由于mysql缓存页是16k,并不能原子性的直接一下子刷到磁盘,所以mysql会把页先写到double write page,然后再真正的写物理磁盘,如果写物理磁盘失效,可以用double write 页的数据来恢复

hash索引

mysql观察到热点数据自动建立的hash索引

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值