MySQL存储引擎总结

在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响整个数据库。而在设计表的时候,我们都会关注一个问题,使用什么存储引擎。

什么是存储引擎?

关系数据库是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时却很差。而我们在实际开发过程中,就可能需要各种的表,不同的表,就意味着存储不同类型的数据,数据处理上也会存在着差异。对于mysql来说,它提供了很多类型的存储引擎,我们可以根据数据处理的需求,选择不同的存储引擎,从而最大限度的利用Mysql强大的功能。

特点

Myisam

BDB

Memory

InnoDB

Archive

存储限制

没有

没有

64TB

没有

事务安全

 

支持

 

支持

 

锁机制

表锁

页锁

表锁

行锁

行锁

B树索引

支持

支持

支持

支持

 

哈希索引

 

 

支持

支持

 

全文索引

支持

 

 

 

 

集群索引

 

 

 

支持

 

数据缓存

 

 

支持

支持

 

索引缓存

支持

 

支持

支持

 

数据可压缩

支持

 

 

 

支持

空间使用

N/A

非常低

内存使用

中等

批量插入的速度

非常高

支持外键

 

 

 

支持

 

在mysql客户端中,使用以下命令可以查看Mysql支持的引擎。

SHOW ENGINES ;

MyISAM:当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表名。例如,我建立一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件:

1、tb_Demo.frm,存储表定义

2、tb_Demo.MYD,存储数据

3、Tb_Demo.MYI,存储索引

 

MyISAM表无法处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。

 

MyISAM存储引擎特别适合在以下几种情况下使用:

1、选择密集型的表:MyIASM存储引擎在筛选大量数据时非常迅速,这是它最突出的有点。

2、插入密集型的表:MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理右键或web服务器日志数据。

 

InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据提供了一个强大的解决方案。我的电脑上安装的MySQL5.6.17版,InnoDB就是作为默认的存储引擎。InnoDB还引入了行级锁定和外键约束,在以下场合下,使用InnoDB是最理想的选择:

1、更新密集型的表:InnoDB存储引擎特别适合处理多重并发的更新请求

2、事务:InnoDB存储引擎是支持事务的标准MySQL存储引擎

3、自动灾难恢复:与其他存储引擎不同,InnoDB表能够自动从灾难中恢复

4、外键约束:MySQL支持外键的存储引擎只有InnoDB

5、支持自动更加列AUTO_INCREMENT属性

一般来说,如果需要事务支持,丙炔有较高的并发读取频率,InnoDB是不错的选择。

原文地址:https://www.cnblogs.com/zhouguowei/p/5241435.html