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. ...
随机推荐
- idea 设置格式化代码 快捷键
- ECMAScript6——Set数据结构
/** * 数据结构 Set */ // ----------------------------------------------------- /** * 集合的基本概念:集合是由一组无序且唯一 ...
- Redis基本数据类型介绍笔记
Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...
- 配置LNPM
在 Ubuntu 系统中,可以使用 apt-get 命令来搭建 LNMP环境.这种方式较编译方式安装更加简便,因此选择使用该方式来搭建环境以供学习. 安装Nginx 使用 sudo apt-get i ...
- mongodump备份小量分片集群数据
1.使用mongodump备份小量分片集群数据 如果一个分片集群的数据集比较小,可以直接使用mongodump连接到mongos实例进行数据备份.默认情况下,mongodump到非primary的节点 ...
- 接口自动化学习--testNG
一个月一更的节奏~ testNg是一个开源的自动化测试框架..具体那些什么特点的就不想打了- -,贴张图(虽然也看不懂): 学习网站:https://www.yiibai.com/testng 一样是 ...
- 【容器魔方解读】AWS Re:Invent 2018大会
每年云计算领域技术与商业风向标之一的AWS Re:Invent大会上周在美国拉斯维加斯召开,如往届一样,AWS密集发布了上百项的新产品或新技术.随着国内近两年云计算尤其是公有云的普及度越来越高,国内各 ...
- PAT甲题题解-1055. The World's Richest (25)-终于遇见一个排序的不水题
题目简单,但解题的思路需要转换一下,按常规思路肯定超时,推荐~ 题意:给出n个人的姓名.年龄和拥有的钱,然后进行k次查询,输出年龄在[amin,amx]内的前m个最富有的人的信息.如果财富值相同就就先 ...
- git learn
$ git config --global user.name "Your Name" $ git config --global user.email "email@e ...
- [转帖]VMware Vsphere 6.0安装部署 (三) vCenter Server安装
VMware Vsphere 6.0安装部署 (三) vCenter Server安装 2016年08月29日 14:59:14 dAng1r0Us 阅读数:72942 版权声明:本文为博主原创文 ...