MySQL 存储引擎

简介

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

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

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

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

 

查看

MySQL 存储引擎
show engines; # 显示可支持的存储引擎
show table status [{from|in} Db_Name] [like ‘pattern’|where expr]; # 可显示指定数据库中指定表的状态信息
# 法一:
show table status like ‘classes’;
# 法二:
show table status where Name=’classes’\G
MySQL 存储引擎

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

MySQL 存储引擎

修改默认存储引擎

MySQL 存储引擎
# 在配置文件/etc/my.cnf中设置如下:
default_storage_engine = InnoDB
MySQL 存储引擎

各存储引擎及其特性

InnoDB

MySQL 存储引擎
支持事务:事务日志;日志文件大小一致:如ib_logfile0和ib_logfile1
支持外键
支持MVCC
支持聚簇索引
支持行级锁:即间隙锁
支持辅助索引
支持自适应hash索引
支持热备份
不支持全文索引
MySQL 存储引擎

MyISAM

MySQL 存储引擎
支持全文索引
支持压缩:用于实现数据仓库,能节约存储空间并提升性能
支持空间索引
支持表级锁:若读写操作比例为9:1或8:2,则使用MyISAM可以提高性能
延迟更新索引:减少IO压力
不支持事务,外键,MVCC,行级锁等
崩溃后无法安全恢复数据
适用场景:多读少写的数据,较小的表,能够容忍崩溃后的修改操作和数据丢失;
如自带的mysql数据库中的表都是使用MyISAM存储引擎的
# 建议:使用InnoDB存储引擎,并使用read commited的隔离级别,性能并不比MyISAM性能差,故推荐使用InnoDB存储引擎
MySQL 存储引擎
 

ARCHIVE

MySQL 存储引擎
仅支持insert和select
支持很好的压缩功能
不支持事务,不能很好的支持索引
适用于:存储日志信息,或其它按时间序列实现的数据采集类的应用,如监控日志
MySQL 存储引擎
 

CSV

1
2
将数据存储为csv格式,不支持索引
仅适用于数据交换场景

BLACKHOLE

1
2
没有存储机制,任何发往此引擎的数据都会丢弃
由于其会记录二进制日志,故常用于多级复制架构中作中转服务器

MEMORY

1
2
3
4
数据保存在内存中,即是一个内存表
仅支持hash索引,使用表级锁
不支持blob和text数据类型
常用于保存中间数据,如周期性的聚合数据等;也用于实现临时表

MRG_MYISAM

1
2
是MyISAM的一个变种,能够将多个MyISAM表合并为一个虚表
属于传统的存储引擎,一般不常用

NDB

1
是MySQL Cluster中专用的存储引擎,不常用

 

第三方的存储引擎

XtraDB

MySQL 存储引擎
增强的InnoDB,由Percona提供;
用法:编译安装MySQL时,下载XtraDB的源码替换MySQL存储引擎中的InnoDB源码,并重新编译安装MySQL
MySQL 存储引擎

PBXT

MySQL 存储引擎
MariaDB自带此存储引擎
支持引擎级别的复制,外键约束
支持事务,MVCC
对SSD磁盘提供适当支持
MySQL 存储引擎

TokuDB

MySQL 存储引擎
使用Fractal Trees索引,性能很强
适用于存储大数据,拥有很好的压缩比
已被引入新版本的MariaDB
MySQL 存储引擎

 

列式存储引擎

Infobright

MySQL 存储引擎
前身为Maria,是增强版的MyISAM
支持崩溃后安全恢复
支持数据缓存
MySQL 存储引擎

其它列式存储引擎

MySQL 存储引擎
如 InfiniDB,MonetDB,LucidDB等
MySQL 存储引擎

 

开源社区存储引擎:

Aria

MySQL 存储引擎
前身为Maria,是增强版的MyISAM
支持崩溃后安全恢复
支持数据缓存
MySQL 存储引擎

Groona

MySQL 存储引擎
全文索引引擎;
Mroonga是基于Groona的二次开发版
MySQL 存储引擎

OQGraph

MySQL 存储引擎
由Open Query研发,支持图结构的存储引擎
MySQL 存储引擎

SphinxSE

MySQL 存储引擎
为Sphinx全文搜索服务器提供了SQL接口
MySQL 存储引擎

 

Spider

MySQL 存储引擎
能将数据切分成不同的分片,比较高效透明的实现了分片(shard);
支持在分片上支持并行查询
MySQL 存储引擎

 

 

选择存储引擎可参考要素

是否需要事务

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

崩溃后的恢复

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

MySQL 存储引擎,布布扣,bubuko.com

MySQL 存储引擎

上一篇:C#制作ActiveX浏览器插件& OCX


下一篇:mysql源码安装