mysql存储引擎的介绍

上一次博客介绍了怎么用命令行查看mysl的存储引擎,这次主要介绍这些引擎的优缺点

  1. InnoDB

    • 特点

      1. 支持自动增长列,而且自增列必须是主键

      2. 支持外键

      3. 创建的表的表结构在.frm文件中,数据和索引分别存储在innodb_data_home_dir和innodb_data_file_path定义的表空间

      4. 提供了良好的事务,崩溃修复能力,和并发控制

    • 缺点

      1. 读写效率稍差,占用的数据空间相对比较大。

  2. MyISAM        

    • 特点

      1. 创建的表的表结构存储成3个文件,文件的名字和表名相同,扩展名包括frm,myd,myi。其中fm为扩展名的文件存储表的结构;myd为扩展名的文件存储数据,其是MyData的缩写。MYI是扩展名的文件存储索引,其是MyIndex的缩写。

      2. 占用空间小,处理速度快

    • 缺点

      1. 不支持事务的完整性和并发

  3. MEMORY

    • 特点

      1. 使用内存来创建表,所有数据也放在内存

      2. 每个表实际对应一个磁盘文件,该文件的文件名和表名相同,类型为frm,该文件中只存储表的结构,而其数据文件,都是存储在内存中。这样有利于对数据的快速处理,提高整个表的处理效率,但要注意的是服务器必须要提供足够的内存来维持表的使用,如果不要了可以释放这些内存,甚至可以删除某个表

      3. 使用哈希索引。其速度要比使用B型数BTree索引快。如果希望使用BTree索引,可以在创建的时候指定。

    • 缺点

      1. 该存储引擎很少用到,因为是放到内存,所以对数据的安全性不高,容易丢失,生命周期短.

      2. MEMORY表的大小受到限制,表的大小主要取决于两个参数,分别是max_rows和max_ heap_table_size,其中max_rows可以在创建表时指定;max_heap_table_size大小默认是16M,可以按需要进行增大


三种引擎的对比:

  • InnoDB支持事务,外键关联,和并发处理,如果要求对数据支持事务完整性比较高,要求实现并发控制,那么选择InnoDB.如果要求对数据进行频繁的更新,删除,那么也可以选择InnoDB引擎,因为该引擎支持事务的提交回滚.

  • MyISAM引擎插入数据快,空间和内存使用率比较低,如果表主要用于插入新记录和读出记录,那么选择该引擎效率很高,如果应用的完整性和并发性要求低,那么也是个很好的选择.

  • MEMORY引擎数据都存储在内存,数据处理速度快但安全性不高,而且不能对表的大小有要求,不能建立太大的表,这类引擎只用于较小的数据库表

注意:一个数据库中表可以有不同的存储引擎.

    




你可能感兴趣的:(mysql存储引擎的介绍)