开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MySQL深入04-存储引擎

简介:
+关注继续查看

简介

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

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

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

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


查看

1
2
3
4
5
6
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

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

wKioL1NT0iqirX_gAAiPQBmwf9E054.jpg

修改默认存储引擎

1
2
# 在配置文件/etc/my.cnf中设置如下:
default_storage_engine = InnoDB


各存储引擎及其特性

InnoDB

1
2
3
4
5
6
7
8
9
支持事务:事务日志;日志文件大小一致:如ib_logfile0和ib_logfile1
支持外键
支持MVCC
支持聚簇索引
支持行级锁:即间隙锁
支持辅助索引
支持自适应hash索引
支持热备份
不支持全文索引

MyISAM

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

ARCHIVE

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

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

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

PBXT

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

TokuDB

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


列式存储引擎

Infobright

1
2
目前较著名的列式引擎,适用于海量数据存储场景,如PB级别的数据存储
专为数据分析和数据仓库设计

其它列式存储引擎

1
如 InfiniDB,MonetDB,LucidDB等


开源社区存储引擎:

Aria

1
2
3
前身为Maria,是增强版的MyISAM
支持崩溃后安全恢复
支持数据缓存

Groona

1
2
全文索引引擎;
Mroonga是基于Groona的二次开发版

OQGraph

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

SphinxSE

1
为Sphinx全文搜索服务器提供了SQL接口

Spider

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


选择存储引擎可参考要素

是否需要事务

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

崩溃后的恢复

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










本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1399162,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL存储引擎的选择
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作
0 0
MySQL 下不同存储引擎下锁的不同表现形式|学习笔记
快速学习 MySQL 下不同存储引擎下锁的不同表现形式
0 0
MySQL数据库之存储引擎(下)
一、存储引擎的概念 1.1 什么是存储引擎 MySQL中的数据用各种不下同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。 存储引擎是MySQL将数据存储在文件系统中的存储方式或者存储格式。 存储引擎是MySQL数据库中的组件,负责执行实际的数据I/O操作。 MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会传输到存储引擎,之后按照各个存储引擎的存储格式进行存储。
0 0
MySQL数据库之存储引擎(上)
一、存储引擎的概念 1.1 什么是存储引擎 MySQL中的数据用各种不下同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。 存储引擎是MySQL将数据存储在文件系统中的存储方式或者存储格式。 存储引擎是MySQL数据库中的组件,负责执行实际的数据I/O操作。 MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会传输到存储引擎,之后按照各个存储引擎的存储格式进行存储。
0 0
MySQL 创建不同存储引擎库、表|学习笔记
快速学习 MySQL 创建不同存储引擎库、表
0 0
MySQL 存储引擎与分类|学习笔记
快速学习 MySQL 存储引擎与分类
0 0
浅析 MySQL 常见存储引擎
之前讲述了MySQL体系结构,当时谈到了MySQL区别于其他数据库的最重要特点是其插件式的表存储引擎。他根据MySQL AB公司提供的文件访问层抽象接口来定制一种文件访问的机制(该机制叫存储引擎)。MySQL 的核心就是存储引擎。
0 0
MySQL——存储引擎
为了管理方便,人们把`连接管理`、`查询缓存`、`语法解析`、`查询优化`这些并不涉及真实数据存储的功能划分为`MySQL SERVER`的功能,把真实的存取数据的功能划分为`存储引擎`的功能。所以在`MySQL SERVER`完成了查询优化后,只需按照生成的`执行计划`调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。 MySQL中提到了存储引擎的概念。简而言之,`存储引擎就是指表的类型`。其实就是存储引擎以前叫做`表处理器`,后来改名为`存储引擎` 它的功能就是接收上层传下来的指令,然后对表中的数据进行提取或写入操作
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
好的 MySQL 兼容可以做到什么程度
立即下载
MySQL 5.7让优化更轻松
立即下载
MySQL表和索引优化实战
立即下载