对比两大主流储存引擎InnoDB和MyISAM

MyISAM储存引擎的的特点

1、支持表压缩存放,一般用做数据仓库,能够节约存储空间。

2、每一个表使用三个文件来保存,这三个文件都位于存储目录下的指定数据库目录中。

tb_name.frm:表结构定义文件

tb_name.MYD:表数据文件,储存数据的

tb_name.MYI:表索引文件

3、支持表锁,读性能比InnoDB性能好,写性能不如InnoDB

4、支持FULLTEXT(全文)索引、空间索引、延迟更新索引

5、不支持事务、外键、行级锁

6、崩溃后无法安全恢复数据

使用场景:一般用于读多写少、表较小且可以忍受崩溃后修复操作和数据丢失

 

Innodb储存引擎的特点

1、InnoDB有2种存储方式

(1)、默认情况下,Innodb在储存表时是将多个表数据共享在一个表空间文件中。这种方式不容易维护表。该表空间文件位于存储目录(datadir指向的目录)中,文件名称为ibdata#。

如果使用这种存储方式,那么每个表也会有3个文件,分别是:

存储目录下的ibdata#:这是一个共享的表空间文件

tb_name.frm:表结构定义文件。位于存储目录的指定数据库目录下。

tb_name.opt:该文件主要用来定义表的字符集及其排序规则。位于存储目录的指定数据库目录下。

 

(2)、使用每表一个独立的表空间文件来存储

这种方式,需要编辑mysql的配置文件,添加如下行即可:

#vim /etc/my.cnf

innodb_file_per_table = 1

然后重启mysqld服务即可。

这种储存方式每个表也包含三个文件:

tb_name.frm:表结构定义文件

tb_name.ibd:表空间文件(用来储存表数据和表索引)

tb_name.opt:表参数文件,里面定义了表使用的字符集以及字符的排序规则

 

2、支持事务、表锁,页锁、行级锁

3、聚簇索引、辅助索引、自适应hash索引。(聚簇索引之外的其他索引,通常称之为辅助索引)

4、支持mvcc(多版本并发控制)

5、支持热备

6、支持外键约束

 

 

MRG_MYISAM存储引擎的的特点

可以将2个结构相同的MyISAM表合并成一个表。

 

 

 

ARCHIVE存储引擎
1、仅支持INSERT和SELECT,支持很好压缩功能
2、 应用于存储日志信息,或其他按照时间序列实现的数据采集类的应用
   

 

CSV存储引擎
将数据存储为CSV格式,不支持索引,仅使用与数据交换场景
   

 

BLACKHOLE存储引擎
没有存储机制,任何发往次引擎的数据都会丢弃,其会记录二进制日志,因此,常用于多级复制架构中作中转服务器
   

 

MEMORY存储引擎
1、保存数据在内存中,内存表;常用于保存中间数据,如周期性的聚合数据等,也用于实现临时表
2、支持hash索引,使用表级锁,不支持BLOB和TEXT数据类型
   

 

NDB存储引引擎
是MySQL CLUSTER中专用的存储引擎、 

 

 

第三方的存储引擎
XtraDB存储引擎:增强的InnoDB,由Percona提供。
编译安装时,下载XtraDB的源码替代MySQL存储引擎中的InnoDB的源码
   

 

PBXT存储引擎:MariaDB自带此存储引擎
1、支持引擎级别的复制、外键约束,对SSD磁盘提供适当支持
 2、支持事务、MVCC
   

 

TokuDB存储引擎:使用Fractal Trees索引,适用存储大数据,拥有很好的压缩比,已经被引入MariaDB。

 

 

 

你可能感兴趣的:( , , ,Innodb储存引擎,MyISAM储存引擎)