mysql数据库引擎 MyISAM和 InnoDB区别
1、 存储结构
MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。
InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。
2、 存储空间
MyISAM:可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。
InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
3、 事务支持
MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。
InnoDB:提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash
recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。
4、 CURD操作
MyISAM:如果执行大量的SELECT,MyISAM是更好的选择。(因为没有支持行级锁),在增删的时候需要锁定整个表格,效率会低一些。相关的是innodb支持行级锁,删除插入的时候只需要锁定改行就行,效率较高
InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。DELETE
从性能上InnoDB更优,但DELETE FROM
table时,InnoDB不会重新建立表,而是一行一行的删除,在innodb上如果要清空保存有大量数据的表,最好使用truncate table这个命令。
5、 外键
MyISAM:不支持
InnoDB:支持
最新文章
- 深入seajs源码系列一
- ASP DropDownList部分选项无法触发回传问题
- js正则表达式替换空格
- ios 关于[xxx timeIntervalSinceNow]出现EXC_BAD_ACCESS错误的解决办法
- 27.二元树的深度[BinaryTreeDepth]
- Linux嵌入式系统与硬件平台的关系
- C#中的堆和栈
- JDK6 下载地址
- 关于C++函数思考1(缺省的六大函数)
- 说说nio----1
- 『OGG 01』Win7 配置 Oracle GoldenGate 踩坑指南
- leetcode — convert-sorted-array-to-binary-search-tree
- JS-3
- jdk8 Metaspace 调优
- [十二省联考2019]异或粽子 (可持久化01tire 堆)
- [基础知识]PeopleSoft应用服务器上的进程含义
- C# 高级编程9 介绍篇
- kafka---->;kafka的使用(一)
- PHP 7.3.0.beta3 发布,下个版本将进入 RC 阶段
- AC日记——营业额统计 1296 codevs
热门文章
- 解决Gradle生成Eclipse支持后,发布到Tomcat丢失依赖jar包的问题
- mybatis高级(3)_延迟加载_深度延迟_一级缓存_二级缓存
- hdu 3473 Minimum Sum
- 2015-01-16 .Net 中级软件工程师 笔试题
- oracle Net Manager 服务命名无法配置(无法新建、添加服务名)
- C——malloc &; free(转载自bccn C语言论坛)
- function,new function,Function,new Function 之间的区别
- Kotlin 介绍
- CentOS6下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)
- jquery 巧用json传参