天天看点

MySQL 存储引擎

简介

MySQL中的数据用各种不同的技术存储在文件(或者内存)中;

每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的功能和能力;

这些不同的实现数据存储的技术在MySQL的整体架构中逻辑化为“存储引擎层”;

存储引擎,通常又被称作“表类型”(即可以在创建表时指定存储引擎,但无法对某一数据库指定存储引擎)

查看

可通过查看表的状态信息获得表所使用的存储引擎类别:

修改默认存储引擎:

各存储引擎及其特性

InnoDB

MyISAM

ARCHIVE

CSV

1

2

<code>将数据存储为csv格式,不支持索引</code>

<code>仅适用于数据交换场景</code>

BLACKHOLE

<code>没有存储机制,任何发往此引擎的数据都会丢弃</code>

<code>由于其会记录二进制日志,故常用于多级复制架构中作中转服务器</code>

MEMORY

3

4

<code>数据保存在内存中,即是一个内存表</code>

<code>仅支持</code><code>hash</code><code>索引,使用表级锁</code>

<code>不支持blob和text数据类型</code>

<code>常用于保存中间数据,如周期性的聚合数据等;也用于实现临时表</code>

MRG_MYISAM

<code>是MyISAM的一个变种,能够将多个MyISAM表合并为一个虚表</code>

<code>属于传统的存储引擎,一般不常用</code>

NDB

<code>是MySQL Cluster中专用的存储引擎,不常用</code>

第三方的存储引擎

XtraDB

PBXT

TokuDB

列式存储引擎:

Infobright

其它列式存储引擎

开源社区存储引擎:

Aria

Groona

OQGraph

SphinxSE

Spider

选择存储引擎可参考要素

是否需要事务

备份的类型的支持(热备或冷备)

崩溃后的恢复

特有的特性(如对SSD的支持等)