InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

MyIASM是IASM表的新版本,有如下扩展:

1. 二进制层次的可移植性。

2. NULL列索引。

3. 对变长行比ISAM表有更少的碎片。

4. 支持大文件。

5. 更好的索引压缩。

6. 更好的键吗统计分布。

7. 更好和更快的auto_increment处理。

以下是一些细节和具体实现的差别:

1.InnoDB不支持FULLTEXT类型的索引。

2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。

3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

转载于:https://www.cnblogs.com/frankyou/p/5300980.html

MySQL 数据库 InnoDB 和 MyISAM 数据引擎的差别相关推荐

  1. centos环境下使用percona-xtrabackup对mysql5.6数据库innodb和myisam进行快速备份及恢复...

    centos环境下使用percona-xtrabackup对mysql5.6数据库innodb和myisam进行快速备份及恢复 有时候我们会碰到这样的业务场景: 1.将大的数据库恢复到本地进行业务测试 ...

  2. mysql数据库应用模式与特点_MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述...

    MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...

  3. InnoDB和MyISAM存储引擎

    本篇文章主要介绍InnoDB和MyISAM存储引擎,以及他们各自应用的场景与优缺点. InnoDB 引擎:具备外键支持功能的事务存储引擎 MySQL从3.23.34a开始就包含InnoDB存储引擎. ...

  4. 一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

    聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了.所以今天在这里用最简短的语言让你明白这些 ...

  5. mysql聚集索引 myisam_一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/21aspnet/article/details/89303988 聚集索引和非聚集索引以及MySQL的 ...

  6. MySQL数据库—InnoDB行存储格式

    目录 一.InnoDB支持的行存储格式 二.Compact记录格式 1.变长字段长度列表 (1)对varchar类型字段长度的存储 (2)对char类型字段长度的存储 2.NULL标志位 3.记录头信 ...

  7. mysql java datetime_Java向mysql数据库插入datetime类型数据实例(精)

    在Mysql数据库中日期跟时间有两种: 1.date类型,date类型也就是我们常见的储存yyyy-MM-dd类型的日期,它不能储存时间,也就是只能储存日期, 2.dateitme就是可以储存日期同时 ...

  8. php导出数据库的指定表数据,MYSQL教程mysql数据库导出指定表数据的方法

    <MYSQL教程mysql数据库导出指定表数据的方法>要点: 本文介绍了MYSQL教程mysql数据库导出指定表数据的方法,希望对您有用.如果有疑问,可以联系我们. 导读:linux下导出 ...

  9. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

最新文章

  1. python3 多进程 同步
  2. Java学习笔记(一)--JDK环境
  3. php json解析教程,php解析json
  4. 《Ext JS高级程序设计》节选: 一个结合DataWrite和RowEditor的Grid示例(2)
  5. k8s1.5.4挂载volume之nfs
  6. deletion in request load scenario
  7. 《面向对象程序设计》作业(四)
  8. VS2015 编译Protobuf
  9. C# 获取exe、dll中的图标,支持获取256x256分辨率
  10. oracle查询日志空间大小,ORACLE 管理 日志与空间
  11. 仿微信在线聊天源码 DuckChat聊天系统PHP采用 PHP 编写的聊天软件,简直就是一个完整的迷你版微信
  12. 2019蓝桥杯 - 迷宫
  13. 西安电子科技大学和东北大学计算机,西安电子科技大学和东北大学比较,哪个好,特别是计算机软件方面...
  14. 酒店管理系统用什么服务器,用勤哲Excel服务器实现酒店管理系统
  15. 有了ElasticSearch为什么还要用MySQL?-这篇文章告诉你
  16. 智能优化与机器学习结合算法实现时序数据预测matlab代码清单
  17. 想要搭建个人博客?我调研了 100 来个 Java 开源博客系统,发现这 5 个最好用!......
  18. 【示波器专题】示波器的频响方式
  19. CCLE 2022 第五届中国教育后勤展览会
  20. 计算机主板上的ide,主板上的IDE是什么?作用?

热门文章

  1. [MIPS汇编语言]输入输出演示(数组)
  2. LeetCode:3. Longest Substring Without Repeating Characters
  3. 第三章:3.5 傅里叶变换
  4. 创业者具备的五大技能_一个优秀创业者必备的基本素质和技能
  5. 西华大学计算机组成原理补考卷,浙江大学航空航天学院空天信息技术保研
  6. akka框架——异步非阻塞高并发处理框架
  7. 简单的java类与对象的总结
  8. Output Operations on DStreams
  9. Python学习笔记--2--面向对象编程
  10. SparkStreaming运行出现 java.lang.NoClassDefFoundError: org/apache/htrace/Trace 错误