存储引擎概述
存储引擎: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存储引擎的一些简单总结!!