当前位置: 首页 > news >正文

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

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

wKioL1NT0iqirX_gAAiPQBmwf9E054.jpg

修改默认存储引擎

# 在配置文件/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

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

增强的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的支持等)

转载于:https://www.cnblogs.com/xiaocen/p/3720346.html

相关文章:

  • 组件化方案调研
  • Android ListView 长按列表弹出菜单
  • 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求...
  • Android平台游戏开发引擎使用指引
  • android获得ImageView图片的等级
  • 自动作文评分
  • 运维生产环境常用脚本
  • 数据结构与算法 - 字符串
  • c语言——‘\0’ ,‘0’, “0” ,0之间的区别
  • Emgucv使用记录-------切忌点一
  • jQuery 效果 - animate() 方法
  • SFB 项目经验-22-如何查看存储的管理IP地址
  • 使用文件映射和信号量来进程间通信
  • python 类定义 继承
  • ubuntu Server 设置主机静态 ip地址
  • @angular/forms 源码解析之双向绑定
  • export和import的用法总结
  • extract-text-webpack-plugin用法
  • input的行数自动增减
  • Mocha测试初探
  • mysql 5.6 原生Online DDL解析
  • Python利用正则抓取网页内容保存到本地
  • QQ浏览器x5内核的兼容性问题
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 聊聊flink的BlobWriter
  • 漂亮刷新控件-iOS
  • 算法-插入排序
  • 无服务器化是企业 IT 架构的未来吗?
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (2)MFC+openGL单文档框架glFrame
  • (23)Linux的软硬连接
  • (C++17) std算法之执行策略 execution
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (三)mysql_MYSQL(三)
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转)Linux下编译安装log4cxx
  • (转)linux下的时间函数使用
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • ***详解账号泄露:全球约1亿用户已泄露
  • .htaccess配置重写url引擎
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .Net中ListT 泛型转成DataTable、DataSet
  • .pop ----remove 删除
  • @angular/cli项目构建--Dynamic.Form
  • @html.ActionLink的几种参数格式
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname