MYSQL 存储引擎的简单认识

来源:互联网 发布:linux stopped 编辑:程序博客网 时间:2024/06/05 05:12

什么是存储引擎?

数据库中根据表的使用频率、插入速度、查询速度、是否支持事物等因素的不同,使用不同的存储引擎,以下根据不同的存储引擎简单阐述下自己的见解。

只有mysql才有存储引擎吗?


在MYSQL 中使用如下命令查看支持的引擎:

show engines;

MyISAM

  1. 独立于操作系统,迁移性好。
  2. 无法使用事务。
  3. 自动生成三个文件(eg:有一个表tb_test,1.生成 tb_demo.frm,存储表定义;2.tb_demo.MYD,存储数据;3.tb_demo.MYI,存储索引。

适用于

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


InnoDB

一种健壮的mysql事务型数据库,mysql默认支持的存储引擎,被大多数公司所使用。
  1. 行级锁定
  2. 外检约束
  3. 事务支持
适用于:

1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。
2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。
3.自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
4.外键约束。MySQL支持外键的存储引擎只有InnoDB。
5.支持自动增加列AUTO_INCREMENT属性。

MEMORY

速度快,存储介质为系统内存。要求表数据格式使用的是长度不变的格式,BLOB和TEXT等不可用,VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不变的CHAR类型,所以可以使用。另外,特别注意:由于数据存储在内存中,重启mysql之后,数据会丢失。


适用于:

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

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

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

:Memory同时支持散列索引和B树索引。B树索引的优于散列索引的是,可以使用部分查询和通配查询,也可以使用<、>和>=等操作符方便数据挖掘。散列索引进行“相等比较”非常快,但是对“范围比较”的速度就慢多了,因此散列索引值适合使用在=和<>的操作符中,不适合在<或>操作符中,也同样不适合用在order by子句中。

MERGE

将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用。

ARCHIVE

它们不经常被读取,拥有高效的插入速度,但其对查询的支持相对较差。
适用于:
存储大量的独立的,作为历史记录的数据。

CSV

它会在数据库子目录里为每个数据表创建一个.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。
  1. 逗号分隔。
  2. 不支持索引
Federated
将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。
适用于:
分布式应用系统。
0 0
原创粉丝点击