您好,欢迎访问一九零五行业门户网

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
可通过查看表的状态信息获得表所使用的存储引擎类别:
修改默认存储引擎:
# 在配置文件/etc/my.cnf中设置如下:default_storage_engine = innodb
各存储引擎及其特性
innodb
支持事务:事务日志;日志文件大小一致:如ib_logfile0和ib_logfile1支持外键支持mvcc支持聚簇索引支持行级锁:即间隙锁支持辅助索引支持自适应hash索引支持热备份不支持全文索引
myisam
支持全文索引支持压缩:用于实现数据仓库,能节约存储空间并提升性能支持空间索引支持表级锁:若读写操作比例为9:1或8:2,则使用myisam可以提高性能延迟更新索引:减少io压力不支持事务,外键,mvcc,行级锁等崩溃后无法安全恢复数据适用场景:多读少写的数据,较小的表,能够容忍崩溃后的修改操作和数据丢失;如自带的mysql数据库中的表都是使用myisam存储引擎的# 建议:使用innodb存储引擎,并使用read commited的隔离级别,性能并不比myisam性能差,故推荐使用innodb存储引擎
archive
仅支持insert和select支持很好的压缩功能不支持事务,不能很好的支持索引适用于:存储日志信息,或其它按时间序列实现的数据采集类的应用,如监控日志
csv
12 将数据存储为csv格式,不支持索引仅适用于数据交换场景
blackhole
12 没有存储机制,任何发往此引擎的数据都会丢弃由于其会记录二进制日志,故常用于多级复制架构中作中转服务器
memory
1234 数据保存在内存中,即是一个内存表仅支持hash索引,使用表级锁
不支持blob和text数据类型常用于保存中间数据,如周期性的聚合数据等;也用于实现临时表
mrg_myisam
12 是myisam的一个变种,能够将多个myisam表合并为一个虚表属于传统的存储引擎,一般不常用
ndb
1 是mysql cluster中专用的存储引擎,不常用
第三方的存储引擎
xtradb
增强的innodb,由percona提供;用法:编译安装mysql时,下载xtradb的源码替换mysql存储引擎中的innodb源码,并重新编译安装mysql
pbxt
mariadb自带此存储引擎支持引擎级别的复制,外键约束支持事务,mvcc对ssd磁盘提供适当支持
tokudb
使用fractal trees索引,性能很强适用于存储大数据,拥有很好的压缩比已被引入新版本的mariadb
列式存储引擎:
infobright
前身为maria,是增强版的myisam支持崩溃后安全恢复支持数据缓存

其它列式存储引擎
如 infinidb,monetdb,luciddb等
开源社区存储引擎:
aria
前身为maria,是增强版的myisam支持崩溃后安全恢复支持数据缓存

groona
全文索引引擎;mroonga是基于groona的二次开发版
oqgraph
由open query研发,支持图结构的存储引擎
sphinxse
为sphinx全文搜索服务器提供了sql接口
spider
能将数据切分成不同的分片,比较高效透明的实现了分片(shard);支持在分片上支持并行查询
选择存储引擎可参考要素
是否需要事务
备份的类型的支持(热备或冷备)
崩溃后的恢复
特有的特性(如对ssd的支持等)
其它类似信息

推荐信息