mysql主要的存储引擎

1.mysql常用存储的对比(引用mysql数据库开发优化与管理维护一书的表格)


特点 Myisam BDB Memory InnoDB NDB
存储限制 没有 没有 64TB
事务安全   支持   支持  
锁机制 表锁 页锁 表锁 行锁 行锁
B树索引 支持 支持 支持 支持 支持
哈希索引     支持 支持 支持
全文索引 支持        
集群索引       支持  
数据缓存     支持 支持 支持
索引缓存 支持   支持 支持 支持
数据可压缩 支持        
空间使用 N/A
内存使用 中等
批量插入的速度
支持外键       支持  
2.1  MyISAM

MyISAM是Mysql默认的存储引擎,MyISAM不支持事务,也不支持外键,优势在于访问速度快,对事物完整性没有要求或者以SELECT INSERT为主的应用基本采用这个引擎来建表。

MyISAM表是独立于操作系统的,移植性比较强。每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表名。

1.tb_demo.frm,存储表定义;
2.tb_demo.MYD,存储数据;
3.tb_demo.MYI,存储索引。

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

1.选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。
2.插入密集型的表。MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。

2.2 InnoDB

InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

InnoDB主要使用环境:

1.用于事务处理应用程序,支持外键。

2.适用于对事务完整性要求高,在并发条件下要求数据的一致性。

3.数据操作主要包括插入 查询 删除 更新。

4.类似于计费和财务等系统对数据精准性要求比较高的系统。

2.3 MEMORY

使用MySQL Memory存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。虽然在内存中存储表数据确实会提供很高的性能,但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。获得速度的同时也带来了一些缺陷。它要求存储在Memory数据表里的数据使用的是长度不变的格式,这意味着不能使用BLOB和TEXT这样的长度可变的数据类型,VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不变的CHAR类型,所以可以使用。

一般在以下几种情况下使用Memory存储引擎:

1.目标数据较小,而且被非常频繁地访问。在内存中存放数据,所以会造成内存的使用,可以通过参数max_heap_table_size控制Memory表的大小,设置此参数,就可以限制Memory表的最大大小。

2.如果数据是临时的,而且要求必须立即可用,那么就可以存放在内存表中。

3.存储在Memory表中的数据如果突然丢失,不会对应用服务产生实质的负面影响。

2.4  MERGE

merge用于将一系列等同的MyISAM表以逻辑方式组合在一起,并作为一个对象引用它们。merge表的优点在于可以突破对单个MyISAM表大小的限制,并且通过将不同的表分布在多个磁盘上,可以有效的改善merge表的访问效率。这对于数据仓储的VLDB环境十分适合。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章