存储引擎概述

存储引擎:1.就是存储数据、建立索引、更新、查询数据等技术的实现方式

                  2.存储引擎是基于表的,而不是基于库的,即不同表的存储引擎可能是不一样的。所以存储引擎也可被称为表类型。

Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,常用的包含 : InnoDB 、MyISAM 、MEMORY等。可以根据需要选择相应引擎。

下面以这三种存储引擎为例,简要介绍!!

InnoDB存储引擎

       Engine: InnoDB

       Support: DEFAULT

       Comment: Supports transactions, row-level locking, and foreign keys

       Transactions: YES

       XA: YES

       Savepoints: YES

 优点:

1.支持事务,行级锁,外键等。这种存储引擎数据的安全得到保障。

2.InnoDB存储引擎在mysql数据崩溃之后提供自动恢复机制。(redo log)

缺点:

InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。

InnoDB 存储表和索引有以下两种方式 :

①. 使用共享表空间存储, 这种方式创建的表的表结构保存在.frm文件中, 数据和索引保存在 innodb_data_home_dir 和 innodb_data_file_path定义的表空间中,可以是多个文件。

②. 使用多表空间存储, 这种方式创建的表的表结构仍然存在 .frm 文件中,但是每个表的数据和索引单独保存在 .ibd 中。

MyISAM存储引擎

        Engine: MyISAM

        Support: YES

        Comment: MyISAM storage engine

        Transactions: NO

        XA: NO

        Savepoints: NO

优点:可被压缩,节省存储空间。并且可以转换为只读表,从而检索效率高,访问速度快,。

缺点:不支持事务、外键。

存储方式:

每个MyISAM在磁盘上采用三个文件组织一张表:

       xxx.frm      (存储表结构的文件)

       xxx.MYD   (存储表中数据的文件)

       xxx.MYI   (存储表中索引的文件)

Memory存储引擎

      Engine: MEMORY

      Support: YES

     Comment: Hash based, stored in memory, useful for temporary tables

     Transactions: NO

     XA: NO

     Savepoints: NO

优点:查询速度快。

缺点:不支持事务。数据容易丢失。因为所有的数据和索引都是存储在内存当中的。

存储方式:

1.表数据以及索引被存储在内存中。这样利于数据的快速处理,使得查询效率很高。

2.每个MEMORY表实际对应一.frm文件 ,且该文件中只存储表的结构。

以上就是在学习mysql存储引擎的一些简单总结!!