MySQL存储引擎对比
MySQL存储引擎对比
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
rows in set (0.00 sec) mysql>
mysql> show table status in yinzhengjie like 'students'\G #我们可以用like来过滤
*************************** . row ***************************
Name: students -------->表名
Engine: InnoDB ------->存储引擎
Version: -------->版本
Row_format: Compact -------->行格式
Rows: -------->现存表中的行数,对于InnoDB的存储引擎的话这个数字可能只是一个估计值,因为innodb支持事物,其中还保存着删除的行数。
Avg_row_length: --------->平均每行所包含的字节数
Data_length: --------->表中数据总体大小,单位是字节
Max_data_length: --------->表能够占用的最大空间,单位为字节。注意,“”则表示没有上线哟!
Index_length: --------->索引的大小,单位也是字节
Data_free: ---------->对于MyISAM表,表示已经分配但尚未使用的空间,其中包含此前删除行之后腾出来的空间。
Auto_increment: ----------->下一个AUTO_INCREMENT的值
Create_time: -- :: ----------->表的创建时间
Update_time: NULL ----------->表数据的最后一次修改时间
Check_time: NULL ------------>使用CHECK TABLE或myisamchk最近一次检查表的时间
Collation: utf8_general_ci ------------->排序规则
Checksum: NULL ------------->如果启动,则为表的checksum
Create_options: ------------->创建表时指定使用的其他选项
Comment: ------------->表的注释信息
row in set (0.00 sec) mysql> show table status in yinzhengjie where name='students'\G #当然用where查询的性能会更好哟!
*************************** . row ***************************
Name: students
Engine: InnoDB
Version:
Row_format: Compact
Rows:
Avg_row_length:
Data_length:
Max_data_length:
Index_length:
Data_free:
Auto_increment:
Create_time: -- ::
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
row in set (0.00 sec) mysql>
MySQL的行格式有:
{DEFAULT|DYNAMIC|FIXED|COMMPRESSED|REDUNDANT|COMPACT},
其中DYNAMIC|FIXED|COMMPRESSED是MyISAM常用的的,而InnoDB即可以使用MyISAM常用的类型还可以使用REDUNDANT|COMPACT等等。
它是由InnoDB管理的特有格式数据文件,内部可同时存储数据和索引。
MySQL的每个表都在数据库目录下存储三个文件,名称如下:
a>.tb_name.frm #存储表结构
b>.tb_name.MYD #存储数据
c>.tb_name.MYI #存储索引
Innodb有两种格式:
a>.innodb_file_per_table=OFF,即是用共享表空间
每个表一个独有的格式定义文件:tb_name.frm
还有一个默认位于数据目录下的共享的表空间文件:ibdata#(它是会自动增长的,比如ibdata1,ibdata2,...)
b>.innodb_file_per_table=ON,即是用独立表空间
每个表在数据库目录下存储两个文件
tb_name.frm #存储表结构
tb_name.ibd #存储数据
通过default_storage_engine服务变量实现。可以用mysql> show variables like '%default%'来查看相应的信息。
a>.支持事务:
有事务日志,这些事物日志文件的大小是一致的哟!):ib_logfile#(例如:ib_logfile0,ib_logfile1,....);
b>.支持外键约束;
c>.支持MVCC(多版本并发控制);
d>.支持聚簇索引:
聚簇索引之外的其他索引,通常称之为辅助索引,一张表聚簇索引只能有一个而辅助索引可以有多个。聚簇索引通常是用主键的方式来实现,(因为主键的数据是不允许重复的);
e>.行级锁:间隙锁;
f>.支持使用辅助索引;
g>.支持自适应的hash索引;
h>.支持热备份,因此数据不需要离线就可以完成备份啦,当然可能要用独立表空间;
MyISAM的使用场景:
只读数据,表较小,能够忍受崩溃后的修复操作和数据丢失,它具有一下特点:
a>.全文索引
b>.支持表压缩存放:做数据仓库,能节约存储空间并提升性能
c>.支持空间索引
d>.表级锁
e>.延迟更新索引
f>.不支持事务、外键和行级锁
g>.崩溃后无法安全恢复数据
MySQL的mysql库使用就是MyISAM存储引擎,我们可以使用“mysql> show table status in mysql\G”进行查看。
仅支持INSERT和SELECT,支持很好压缩功能。应用于存储日志信息,或其他按照时间序列实现的数据采集类的应用。它不支持事物,不能很好的支持索引。
将数据存储为CSV格式,不支持索引,仅使用与数据交换场景。说白了就是可以在多种不同的数据库之间来回导入导出数据库的。也就是说我们可以将office的文档保存为CSV就可以直接向MySQL数据库导入哟。
又名黑洞存储引擎,没有存储机制,任何发往次引擎的数据都会丢弃,其会记录二进制日志,因此,常用于多级复制架构中作中转服务器。
保存数据在内存中,它是一个内存表(也就是说重启操作系统之后就会丢失该表的数据哟!);常用于保存中间数据,如周期性的聚合数据等,也用于实现临时表,支持hash索引,使用表级锁,不支持BLOB和TEXT数据类型。
是MYISAM的一个变种,能够将多个MyISAM表合并成一个虚表。它是传统的MySQL存储引擎,现在基本上很少有人用了,因为一个表的数据内容本来就很大了,人们更多考虑的是如何将一张表的内容如何拆分开来。
是MySQL CLUSTER中专用的存储引擎。它是集群用的一种存储引擎,但是这种集群案例用的几乎寥寥无几。
XtraDB
它是增强的InnoDB,有Percona提供。
编译安装时,下载XtraDB的源码替代MySQL存储引擎中的InnoDB的源码(当然你得把XtraDB的名称改为InnoDB哟)
PBXT:
MariaDB自带此存储引擎
支持引擎级别的复制、外键约束,对SSD磁盘(固态磁盘)提供适当支持,当然也支持事务和MVCC等等。
TokuDB:
使用 Fractal Trees索引,适用存储大数据,拥有很好的压缩比,已经被引入MariaDB。
Infobright
目前较有名的列式引擎,适用于海量数据存储场景,如PB级别,专为数据分析和数据仓库设计,分为商业版本和社区版本,其他三个都不是特别有名。
InfiniDB
MonetDB
LucidDB
Aria:
前身为Maria,是增强版的MyISAM(支持崩溃后安全恢复,支持数据缓存)
Groona:
全文索引引擎
Mroonga:
是基于Groona的二次开发版
OQGraph:
由open query研发,支持图(网状 )结构的存储引擎
SphinxSE:
为Sphinx全文搜索服务器提供了SQL接口
Spider:
能将数据切分成不同的分片,比较高效透明的实现了分片(shared),并支持在分片上支持并行查询
MySQL存储引擎对比的更多相关文章
- mysql学习--MySQL存储引擎对比总结
一.存储引擎是什么 存储引擎是数据库的核心,对于mysql来说,存储引擎是以插件的形式运行的.MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用.你可以选择适用于服务器. ...
- 【mysql】mysql存储引擎
了解存储引擎我们先看下mysql的体系架构. 上图是mysql的逻辑架构图,可以看到分了几层. 第一层是大部分网路客户端工具,比如php,python ,JDBC等,主要功能就是连接处理,授权认证等 ...
- Mysql存储引擎比较
Mysql作为一个开源的免费数据库,在平时项目当中会经常使用到,而在项目当中我们的着重点一般在设计使用数据库上而非mysql本身上,所以在提到mysql的存储引擎时,一般都不曾知道,这里经过网上相关文 ...
- MySQL存储引擎之Myisam和Innodb总结性梳理
Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比 MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始 ...
- 【转】mysql存储引擎
http://www.cnblogs.com/kevingrace/p/5685355.html Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比 MyISAM In ...
- MySQL存储引擎差异化实验
本篇把MySQL最常用的存储引擎给大家做一个介绍,然后通过插入.修改和并发实验来了解和验证一下它们之间的一些差异. 一.MySQL存储引擎简介 存储引擎在MySQL结构里占据核心的位置,是上层抽象接口 ...
- 浅谈MySQL存储引擎-InnoDB&MyISAM
存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的.每一种存储引擎都有它的优势和劣势,本文只讨论最常见 ...
- MySQL存储引擎之Myisam和Innodb总结性梳理-转
原文链接:https://www.cnblogs.com/kevingrace/p/5685355.html 谢谢楼主 Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比 ...
- 7.Mysql存储引擎
7.表类型(存储引擎)的选择7.1 Mysql存储引擎概述 mysql支持插件式存储引擎,即存储引擎以插件形式存在于mysql库中. mysql支持的存储引擎包括:MyISAM.InnoDB.BDB. ...
随机推荐
- 表单设置 disabled 后无法传值到后台的解决办法
在提交 from 表单时,下面的 input 无法正常提交给后台, 发现,如果input的字段设为disabled,该表单是无法提交的. <input type="text" ...
- EF查询百万级数据的性能测试--单表查询
一.起因 个人还是比较喜欢EF的,毕竟不用写Sql,开发效率高,操作简单,不过总是听人说EF的性能不是很好,也看过别人做的测试,但是看了就以为真的是那样.但是实际上到底是怎么样,说实话我真的不知道. ...
- OpenMPI源码剖析:网络通信原理(一)
MPI中的网络通信的原理,需要解决以下几个问题: 1. MPI使用什么网络协议进行通信? 2.中央数据库是存储在哪一台机器上? 3.集群中如果有一台机器挂掉了是否会影响其他机器? 参考: https: ...
- 详细聊聊k8s deployment的滚动更新(二)
一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 ● 相关的参数介绍: livenessProbe:存活性探测.判断pod是否已经停止 readinessProbe:就绪 ...
- dtcp格式定义
common name type optional comment id string y Content id version string y DTCP version. "1.0&qu ...
- PAT甲题题解-1019. General Palindromic Number (20)-又是水题一枚
n转化为b进制的格式,问你该格式是否为回文数字(即正着写和倒着写一样)输出Yes或者No并且输出该格式又是水题... #include <iostream> #include <cs ...
- 就qq软件的优缺点
qq对于现在的人来说,可谓是无所不知的,这也使得它迅速融入到人们的生活中,但它也是一把双刃剑,就优缺点我进行一下举例说明: 它的优点:qq由最初设计的一种聊天工具现在已经发展成为一个很全面多用途的工具 ...
- Leetcode题库——46.全排列
@author: ZZQ @software: PyCharm @file: permute.py @time: 2018/11/15 19:42 要求:给定一个没有重复数字的序列,返回其所有可能的全 ...
- HTTP 协议(2)
一.URL HTTP 是一个基于 TCP 的应用层协议,其中 HTTP1.1 版本中支持持续的连接机制(Keep-alive),绝大多数的 WEB 开发都是基于 HTTP 的应用. HTTP 的 UR ...
- java学习一 path与classpath
path 任意目录下执行 javac JAVA classpath找到指定目录下的.class文件 前提是进入该文件目录里面 生成.class文件; 变量 的两个特性:1.约束了类型 2.约束了范围 ...