3 MySQL存储引擎

作者: 笑Skr人啊 | 来源:发表于2017-12-07 15:57 被阅读3次

MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:

  • MyISAM
  • InnoDB
  • MERGE
  • MEMORY(HEAP)
  • BDB(BerkeleyDB)
  • EXAMPLE
  • FEDERATED
  • ARCHIVE
  • CSV
  • BLACKHOLE

MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:

MyISAM

MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。

MEMORY

MEMORY存储引擎提供“内存中”表。MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。
注释:MEMORY存储引擎正式地被确定为HEAP引擎。

InnoDB

InnoDB和BDB存储引擎提供事务安全表。默认引擎,BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。

EXAMPLE

EXAMPLE存储引擎是一个“存根”引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。

NDB Cluster

NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。

ARCHIVE

ARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。

CSV

CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。

BLACKHOLE

BLACKHOLE存储引擎接受但不存储数据,并且检索总是返回一个空集。

FEDERATED

FEDERATED存储引擎把数据存在远程数据库中。

比较常用的是MyISAM和InnoBD

构成上的区别:
每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。
-  .frm文件存储表定义。
-  数据文件的扩展名为.MYD (MYData)。
-  索引文件的扩展名是.MYI (MYIndex)。

基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB.

事务处理上方面:

MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持

InnoDB提供事务支持事务,外部键(foreign key)等高级数据库功能
图片.png
image.png image.png

如何选择mysql的存储引擎

在开发中,我们经常使用的存储引擎 myisam / innodb/ memory
myisam 存储: 如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎. ,比如 bbs 中的 发帖表,回复表.

INNODB 存储: 对事务要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表.

Memory 存储,比如我们数据变化频繁,不需要入库,同时又频繁的查询和修改,我们考虑使用memory, 速度极快.

Memory 存储建立的表和数据全部存储在内存中,不存在与磁盘上,所以速度极快,无需持久化保存的,建议使用

各存储引擎的区别(主要从这几个方面回答)

    1. 事务安全
    2. 查询和添加速度
    3. 支持全文索引
    4. 锁机制
    5. 外键 MyISAM 不支持外键, INNODB支持外键.

如果你的数据库的存储引擎是myisam,请一定记住要定时进行碎片整理

因为当表的存储引擎为myisam时,删除表中数据,MySQL中存储该表的文件大小不变,
长久以往,文件会越来越大,因此要定时进行碎片整理

我们应该定义对myisam进行整理 
optimize table tableName;

相关文章

网友评论

    本文标题:3 MySQL存储引擎

    本文链接:https://www.haomeiwen.com/subject/vizdixtx.html