Mysql存储引擎

mysql

Posted by jiang on July 19, 2019

存储引擎

innodb

  • 支持事务
  • 行锁
  • 外键
  • 非锁定读 默认读取操作不产生锁
  • 文件类型:idb
  • 表存储 每张表的存储按照主键顺序存放 没有显示主键 每行生产一个6字节的ROWID,并以此做主键
  • 通过mvcc获得高性能
  • 实现4种隔离级别 默认repeatable next-key locking 避免幻读
  • 插入缓冲 二次写 自适应哈希索引 预读

    myISAM

  • mysql官方提供引擎
  • 不支持事务
  • 支持表锁 全文索引
  • 对于oltp处理速度快
  • 除windows以外 所有mysql版本默认存储引擎
  • 文件myd数据文件 myi索引文件
  • 5.0以前是边4G上限 以后是默认支持256T
  • ndb
  • Sony 集群引擎
  • 数据全部放在内存中
  • join操作是在mysql层 复制的join操作查询慢

    memory

  • 表中数据存放在内存中
  • 适用存储临时表 数据仓库中的纬度表 哈希索引
  • 不支持表锁 并发性能差 不支持text 和blob存储varchar定长char存储浪费内存
  • 中间结果集含text等适用myisam存储临时文件

    archive

  • 支持insert和select操作
  • 行压缩1:10
  • 适合存储归档数据日志 不支持高并发

    federated

    Maria

  • 新版myisam 缓存数据和索引文件 行锁 mvcc
1
show engines\G; 

链接mysql

  • 进程链接 管道 套接字
  • Tcp/ip 检查权限视图 判断ip是否允许 user表
  • uinx域套接字

    Innodb 架构

  • 内存池
  • 维护进程访问的内部数据结构
  • 缓存磁盘数据
  • 重做日志缓冲
  • 默认7线程 4个io1个mater 1个锁1个错误监控

    内存

  • 缓冲池 重做日志缓冲 额外缓冲
  • 数据库文件按页读取到缓冲池16k