Mysql存储引擎

MyISAM存储引擎

       Mysql5.5版本以前的默认存储引擎,大部分系统表、临时表(在排序、分组等操作中,数量超过一定大小后,由查询优化器建立的临时表)使用MyISAM存储引擎

       构成:MYD:数据文件;MYI:索引文件

        特性: 支持表级锁,所以在并发性高的情况下,性能不是很好。

                    表损坏修复(检查表:check table tabllename;修复表:repair  table tablename)

                     支持表的全文索引

                    支持压缩操作(减少磁盘IO),压缩后不能再写入,只能读。myisampack命令行工具

                     不支持事务

Innodb存储引擎:

       5.5版本开始,mysql中建立数据库默认存储引擎为Innodb。Innodb使用表空间存储数据(系统表空间,独立表空间)

             mysql> show variables like 'innodb_file_per_table';

              innodb_file_per_table=on-----------独立表空间:tablename.ibd

               innodb_file_per_table=off-----------系统表空间:ibdataX

               系统表空间,独立表空间对比:

                           5.5版本前默认使用系统表空间

                          系统表空间无法简单收缩文件大小(删除表数据时,系统表空间不会缩小空间)

                          独立表空间可以通过optimize table命令收缩系统文件

                          系统表空间可能会产生IO瓶颈,独立表空间可同时对多个表同时进行IO操作

              系统表空间到独立表空间的转换:

                            1、使用mysqldum导出所有表数据

        2、停止mysql服务,修改相关参数,删除Innodb相关文件

        3、重启mysql服务,重建Innodb独立表空间

        4、重新导入数据

          Innodb存储引擎特性:

                事务性存储引擎(原子性、隔离性、一致性、持久性)

                Redo日志(事务提交后,修改后的数据存放到缓冲器,每隔一段时间刷写到磁盘)mysql> show variables like 'innodb_log_buffer_size';

                 Undo日志(未提交事务的回滚---一致性、原子性)

                行级锁能支持更大的并发

CSV存储引擎:

           数据以文件方式存储在文件中

           .CSV文件存储表内容

   .CSM文件存储表元数据和表状态和数据量

   .frm文件存储表结构信息

           所有列不能为空、不支持索引

Archive存储引擎:

           以zlib对表数据进行压缩,磁盘IO更少

          数据存储在ARZ后为后缀的文件中

          只支持inert和select操作,只允许在自增ID列建立索引

Memory存储引擎:

       数据存放在内存中,读写速度快,但是服务器重启或宕机数据会丢失

      使用场景:

            用于查找或者映射表,例如邮编和地区的对应表

           保存数据分析中产生的中间表

            缓存周期性聚合数据的结果表

原文地址:https://www.cnblogs.com/liyuanshu/p/13289257.html