mysql 存储引擎

介绍

  1. 可插拔的插件方式
  2. 存储引擎是指定在表之上的,每个表可以指定专用的存储引擎
  3. 不管采用什么存储引擎,都会在数据区产生对应的一个frm文件(表结构定义描述文件)

CSV 存储引擎

特点:

  1. 不能定义没有索引、列定义必须非空,不能设置自增列(不适用大表或数据的在线处理)
  2. csv数据的存储用 隔开,可以直接编辑csv文件进行数据的编排(数据安全性低)

注:编辑之后,要生效使用 flush table xxx 命令

应用场景:

  1. 数据的快速导出导入
  2. 表格直接转换成csv

Archive 存储引擎

特点:

  1. 只支持insert和select操作
  2. 只允许自增ID建立索引
  3. 行级锁
  4. 不支持事务
  5. 数据占用磁盘少

应用场景:

  1. 日志系统
  2. 大量的设备数据采集

Memory 存储引擎

数据都是存储在内存中,IO效率高,服务重启数据丢失,内存数据表默认只有16M。

特点:

  1. 支持hash索引,B tree 索引,默认hash(查找复杂度O(1))
  2. 字段长度都是固定长度 varchar(32) = char (32)
  3. 不支持大数据存储类型,如blog、text
  4. 表级锁

应用场景:

  1. 等值查找热度较高的数据
  2. 查询结果内存中的计算,作为临时表存储需要计算的数据

Myisam 存储引擎

mysql 5.5 之前默认的存储引擎,较多的系统表也还是用这个引擎,系统临时表也会用到该引擎。

特点:

  1. select count(*) from table 无需进行数据的扫描

  2. 数据(MYD)和索引(MYI)分开存储

  3. 表级锁

  4. 不支持事务

    索引与数据分开存储,不管以什么字段建立索引,都会存储数据的一个地址的指针,根据该指针找到数据。

Innodb 存储引擎

mysql 5.5 之后默认的存储引擎。

特点:

  1. 支持事务
  2. 行级锁
  3. 聚集索引(主键索引)的方式进行数据存储
  4. 支持外键

以主键为索引来组织数据的存储,在叶子节点存储了该条数据的所有数据,如果其他字段做索引,会在该字段索引的叶子节点存储主键索引的值,再根据该值在主键索引种找到数据。如果没有明确指定主键索引,会自动生成 6 byte的 int 主键索引。

0%