2、MySql存储引擎简介(笔记)

MySql体系

先来看一下MySql的架构图:mysql

MySql的存储引擎在架构的最下层,提供了各式各样的存储特性,下面介绍几个经常使用的存储引擎。sql

MyISAM

官方提供的一个存储引擎,在数据库的系统表和系统生成的临时表,有时会用到该存储引擎。数据库

存储方式

  • table.MYD:数据文件;
  • table.MYI:索引文件;
  • table.frm:结构文件;

特性

  • 表级锁,查询时使用共享锁,修改时使用独占锁;
  • 修复时,使用check table xxx 和 repair table xxx;
  • 索引,在5.7以前为数很少的支持全文索引(Text和Blob前500个字符)和空间函数的存储引擎;
  • 支持压缩,使用mysiampack压缩,会产生一个xxx.OLD文件,压缩后表为只读模式;

限制

mysql5.0以前,单表大小默认不能超过4G,能够用max_rows和avg_row_length修改。5.0之后的版本单表支持256TB。缓存

使用场景

  • 非事务OLAP应用,由于MYISAM不支持事务;
  • 只读应用,由于压缩后是只读模式,可是会节约磁盘空间;
  • 空间应用,5.7前惟一支持空间函数的存储引擎;

InnoDB

数据

结构仍是存储在.frm文件中,但innoDB有本身的表空间,以.idb结尾,也可使用系统表空间,可是不方便进行文件收缩,并且使用系统表空间,在多表操做时会有I/O瓶颈。服务器

特性

支持事务,由redo log和undo log实现,redo log提供了内存缓冲区和内存日子文件,以顺序写的方式执行提交的事务,undo log提供了回滚与MVCC功能架构

支持行级锁,写操做时的锁定范围更少,提升了并发能力。并发

innodb还提供了状态检查,使用 show engine innodo status 查看最近N秒的服务器状态。函数

使用场景

  • 使用大多的OLTP应用;
  • 5.7后也有了全文索引和空间函数;
  • 是很是经常使用的一种存储引擎,也是mysql如今默认的存储引擎了;

CSV

数据

以.csv文件存储数据,.csm文件存储表状态,.frm存储结构;spa

特性

  • 全部列不能为空;
  • 不支持索引;
  • 可直接编辑文件内容,内容以“aa”,"bb"格式存储在.csv文件中;

场景

能够用于数据交换,看成中间表使用。日志

Archive

数据

  • 以zlib存储数据,会对数据进行压缩,比例很高;
  • 以.ARZ文件存储;

特色

  • 只支持insert和select;
  • 能够在自增列上建立索引;

场景

  • 适合保存日志;
  • 适合数据采集类应用;

Memary

数据

也叫HEAP,数据保存在内存中,文件只有一个.frm文件,保存结构。

特色

  • 支持HASH和BTree索引,Hash用做等值,BTree用做范围;
  • 全部字段都是固定长度的;
  • 不支持BLOG和TEXT;
  • 使用了表级锁;
  • 表大小由max_heap_table_size决定;

场景

  • 映射表;
  • 分析数据用的中间表;
  • 缓存周期性数据;
相关文章
相关标签/搜索