MySQL??InnoDB和MyISAM存储引擎的区别

发布时间:2021-11-29 01:06:26

InnoDB:

MySQL默认的事务型引擎,也是最重要和使用最广泛的存储引擎。它被设计成为大量的短期事务,短期事务大部分情况下是正常提交的,很少被回滚。InnoDB的性能与自动崩溃恢复的特性,使得它在非事务存储需求中也很流行。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。


MyISAM:

在MySQL 5.1 及之前的版本,MyISAM是默认引擎。MyISAM提供的大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM并不支持事务以及行级锁,而且一个毫无疑问的缺陷是崩溃后无法安全恢复。正是由于MyISAM引擎的缘故,即使MySQL支持事务已经很长时间了,在很多人的概念中MySQL还是非事务型数据库。尽管这样,它并不是一无是处的。对于只读的数据,或者表比较小,可以忍受修复操作,则依然可以使用MyISAM(但请不要默认使用MyISAM,而是应该默认使用InnoDB)


MySQL存储引擎--MyISAM与InnoDB区别
1、 存储结构

MyISAM: 每个MyISAM在磁盘上存储成三个文件。分别为:表定义文件、数据文件、索引文件。 第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。


InnoDB: 所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。


2、 存储空间

MyISAM: MyISAM支持支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。当表在创建之后并导入数据之后,不会再进行修改操作,可以使用压缩表,极大的减少磁盘的空间占用。


InnoDB: 需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。


3、 可移植性、备份及恢复

MyISAM: 数据是以文件的形式存储,所以在跨*台的数据转移中会很方便。在备份和恢复时可单独针对某个表进行操作。


InnoDB: 免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump,在数据量达到几十G的时候就相对痛苦了。


4、 事务支持

MyISAM: 强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。


InnoDB: 提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。


5、 AUTO_INCREMENT

MyISAM: 可以和其他字段一起建立联合索引。引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。


InnoDB: InnoDB中必须包含只有该字段的索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列。


6、 表锁差异

MyISAM: 只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。


InnoDB: 支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多用户并发操作的新能。但是InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。


7、 全文索引

MyISAM: 支持 FULLTEXT类型的全文索引


InnoDB: 5.6版本之后InnoDB存储引擎开始支持全文索引,5.7版本之后通过使用ngram插件开始支持中文。之前仅支持英文,因为是通过空格作为分词的分隔符,对于中文来说是不合适的


MySQL允许在char、varchar、text类型上建立全文索引


8、表主键

MyISAM: 允许没有任何索引和主键的表存在,索引都是保存行的地址。


InnoDB: 如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。


9、表的具体行数

MyISAM: 保存有表的总行数,如果select count() from table;会直接取出出该值。


InnoDB: 没有保存表的总行数,如果使用select count(*) from table;就会遍历整个表,消耗相当大,但是在加了wehre条件后,myisam和innodb处理的方式都一样。


10、CRUD操作

MyISAM: 如果执行大量的SELECT,MyISAM是更好的选择。


InnoDB: 如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。


11、 外键

MyISAM: 不支持


InnoDB: 支持

相关文档

  • 2021年第一学期教师工作总结
  • CSS+DIV设计导航条源代码
  • Android Camera框架
  • 安全工作体会精选多篇
  • Linux系统??线程函数传递参数
  • 关于乐观励志名句推荐
  • 梦见牛肉坏了什么意思周公解梦
  • 为什么古装剧翻拍不如旧版
  • 获取EXE文件版本信息(版本格式:xx.xx.xx.xx)
  • mybatis与mysql的优点_Mybatis和JDBC的区别(优缺点)
  • 乌龟几天不放水会死
  • 优秀教师代表演讲稿
  • 浅谈JS中的Promise
  • 关于顶岗实习的最新表扬信范文
  • 养肝护肝吃什么食物好
  • Fiddler突然之间不能抓取任何数据包
  • 英语六级写作难?高分经验看这里
  • redisTemplate.keys异常
  • 男的睾丸炎的原因有哪些 导致男性睾丸炎原因有哪些
  • 兔子产仔后不去兔仔旁边怎么回事
  • 局域网怎样抢网速
  • 儿童舞蹈题材的编排方法和技巧
  • 高三优秀毕业生自我鉴定范文
  • 建行大堂经理竞聘演讲稿范文
  • 教授讲了三个恐怖故事
  • 多吃西红柿有什么好处
  • 正式员工劳动合同参考模板
  • 【论历史是什么:从卡尔】论历史活动探究课的定位、目标与组织形式论文
  • smali java_Android逆向??初识smali与java类
  • vc/vs工程命令行编译
  • 猜你喜欢

  • 有哪些从业资格证非专业人士可以考的
  • 【最新】金融投资理财专业简历模板-精选word文档 (3页)
  • 初一想象作文《小鸡与大灰狼》800字
  • 豫粱八号高粱密度栽培试验
  • 浅谈“教师课堂教学比赛”对高校青年教师的自我教育功能
  • 浩汉设计
  • 三年级信息技术第三单元《活动8 快乐的童年》教学设计
  • 2018年中考历史总复*模块二中国*代史第4单元中华民族的抗日战争课件
  • 双极化微带缝隙方形贴片天线
  • 砌筑分项工程劳务承包协议
  • 《狼国女王》读后感五百字
  • 2017年离婚协议书样本样本
  • 管理学原理期末考试题目和答案整理
  • 九年级化学第二学期教学的计划范文
  • 丁字帐下载!能自动生成科目汇总表、资产负[1]...
  • 经典的期末给学生的祝福短信
  • 2017年幼儿园中班下学期教学计划
  • 北京埃科觅石油工程科技开发有限公司濮阳分公司企业信用报告-天眼查
  • 库存销售管理软件的好处
  • 协助疾控对疫情调查、采样与处理的流程
  • 矿井工作面瓦斯异常涌出分析及治理策略
  • 餐厅个人年终工作总结
  • 甘肃省普通高校校园足球开展现状的调查研究——以河西学院为例
  • 部编人教版五年级语文下册教案-《军神》教学设计
  • 如何跟收入比自己高的女生谈恋爱
  • 武汉汇新文化传播有限公司企业信用报告-天眼查
  • 2019届高三语文一轮复* 第二部分 现代文阅读 专题三 实用类文本阅读 Ⅲ 科普文课件
  • 纳米科学与技术-纳米材料的制备方法
  • 天下第一关导游词
  • 勤奋好学古代名人名言
  • 长沙世茂2011年应收账款明细账
  • 分析化学第二章-酸碱滴定
  • 2017年高铁用特钢行业现状及发展前景趋势分析报告
  • 亲子教育-幼儿园小朋友新年贺词简短版【三篇】 精品
  • LeetCode-2 Given an integer array of size n, find all elements that appear more than n/3 times.
  • 【SDR】srsLTE安装、运行及测试
  • [K12学*]2018版高中数学 第三章 空间向量与立体几何 3.2.5 距离(选学)学案 新人教B版选修2-1
  • 腹腔镜胆囊炎、胆结石患者胆囊切除围手术期的健康教育
  • 昆明强盾经贸有限公司(企业信用报告)- 天眼查
  • 第5单元 SAMBA服务器配置
  • 招财猫的画法带步骤图涂颜色 可爱招财猫简笔画图片
  • 【最新推荐】万圣节调侃祝福语-精选word文档 (2页)
  • 电脑版