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. ...
随机推荐
- springboot项目生成jar包(带静态资源)方法
[Maven]在pom.xml文件中使用resources插件的小作用 不过war包比较实用,毕竟独立的tomcat比较好控制
- 微信小程序之分享或转发功能(自定义button样式)
小程序页面内发起转发 通过给 button 组件设置属性open-type="share",可以在用户点击按钮后触发 Page.onShareAppMessage 事件,如果当前页 ...
- 行级安全(Row-Level Security)
通过授予和拒绝(Grant/Deny)命令控制用户的权限,只能控制用户对数据库对象的访问权限,这意味着,用户访问的粒度是对象整体,可以是一个数据表,或视图等,用户要么能够访问数据库对象,要么没有权限访 ...
- 一、Django前后端交互之Ajax和跨域问题
一.Ajax介绍 1.概述 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Jav ...
- Js_图片轮换
本文介绍用javascript制作图片轮换效果,原理很简单,就是设置延时执行一个切换函数,函数里面是先设置下面的缩略图列表的白框样式,再设置上面大图的src属性,在IE中显示很正常,可是在FF中会有变 ...
- Linux 僵尸进程
Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态.例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止.如果子进 ...
- 现代OpenGL渲染管线介绍
原文摘选自 现代OpenGL渲染管线介绍 此文对最新的OpenGL做一个简单的介绍,如有理解错误,敬请指正.英文原文: https://glumpy.github.io/modern-gl.html ...
- pycharm 调试 scrapy
http://blog.csdn.net/shijichao2/article/details/61940931
- foreach 当被循环的变量为空时 不进入循环
$a = []; foreach($a as $v){ echo 222; } //不会输出222 并且不会报错
- akm
队名--牛肉面不要牛肉不要面 队伍成员 211406285 林志松 [队长兼前端开发] 211606368 林书浩 [系统设计] 211606357 陈远军 [UI美工] 211606335 吴沂章 ...