MySQL——四种常用的存储引擎

MySQL——四种常用的存储引擎


数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySql的核心就是存储引擎

一、MyISAM

不支持事务、也不支持外键,支持全文索引,但是对于一些在线分析处理操作速度快。

文件组成由 myd  存放数据的  myi存放索引的

支持3中不同的存储格式:静态表、动态表、压缩表。

静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;

    缺点:是占用的空间通常比动态表多(因为存储时会按照列的宽度定义补足空格)

    注:在读取数据的时候,默认会把字段后面的空格去掉,如果不注意会把数据本身带的空格也会忽略。

动态表:记录不是固定长度的,这样存储的优点是占用的空间相对较少;

    缺点:频繁的更新、删除数据容易产生碎片,需要定期执行OPTIMIZE TABLE或者myisamchk-r命令来改善性能

压缩表:因为每个记录是被单独压缩的,所以只有非常小的访问开支

二、InnoDB

支持事务,主要是面向在线事务处理方面的应用,特点是行锁设计,并支持外键、支持自动增长列。

Innodb采用聚集索引的方式。没有主键,没有唯一键,为每一行生产一个6字节的行id,作为主键。

三、Memory

将数据放在内存中,如果数据库重启或者宕机,表数据就会丢失。非常适合存储一些临时表,默认的是哈希索引,不是B+树索引,varchar()默认是按照char()存储的,浪费内存。

不支持textBLOB类型。如果数据中有textBLOB类型,数据库会把这些数字转换到磁盘上。

Hash索引优点:
   Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。

Hash索引缺点:

   那么不精确查找呢,也很明显,因为hash算法是基于等值计算的,所以对于“like”等范围查找hash索引无效,不支持;

四、Archive

只支持INSERTSELECT操作,使用压缩算法将数据进行压缩后存储,压缩比例一般是1:10,主要提供插入和压缩功能


四种存储引擎的对比

MySQL——四种常用的存储引擎_第1张图片




你可能感兴趣的:(MySQL数据库)