Mysql常见的存储引擎有什么,有什么区别
    常见的存储引擎有MyISAM,InnoDB,MEMORY,MERGE.今天我们就分别介绍一下,

    MyiSAM存储引擎特点

    • 不支持事务,不支持外键
    • 每个myisam在磁盘存储成3个文件文件名和表名相同,
      • .frm,存储表定义
      • .MYD,存储数据
      • .MYI,存储索引
    • 数据文件和索引文件放到不同的目录,平均分布IO,获得更快地的速度
    • 支持3种不同的存储格式
      • 静态表
      • 静态表的字段都是非变长字段,这样每个记录的长度是固定,这个方式的优点在于存储速度非常快,容易缓存,而且表发生损坏后也容易修复,缺点就是占空间.
      • 动态表
      • 包含变长字段,记录不是固定长度,优点就是占用空间少,但出错恢复起来很难修复
      • 压缩表
      • 由myisampack工具常见,占据非常小的磁盘空间,因为每个记录是被单独压缩的,所以只有非常小的访问开支

    InnoDB存储引擎

    • 支持具有提交,回滚和崩溃恢复能的事物安全
    • 支持自动增长列
    • 支持外键约束
    • 数据的物理组织形式聚簇表,所有的数据按照主键来组织,数据和索引放在一起,都位于B+树的叶子节点上
    • 存储表和索引也有两种方式
      • 使用共享表空间存储,表的表结构保存在.frm文件中,数据和索引保存在innnodb_data_home_dir和innodb_data_file_path定义的表空间,可以是多个文件
      • 使用多表空间存储,表结构放在.frm文件中,但是每个表的数据和索引单独放在.idb中,分区表的话,每个分区对应单独的idb文件,文件名是表名+分区名

    Memory存储引擎

    • 支持的数据类型有限制,比如不支持text和blob类型
    • 每个memeory表只实际对应一个磁盘文件,格式.frm
    • 访问速度快,因为数据都在内存中,默认使用HASH索引

    Merge存储引擎

    • 是一组MyiSAM表组合,这个鞋myisam表结构必须完全相同
    • 本身没有数据,对他操作实际上是对内部Myisam表操作
    • merge磁盘存储两个文件,一个是.frm存储表定义,一个是.mgr文件包含组合表的信息