mysql的InnoDB和MyISAM对比
InnoDB和MyISAM是在使用MySQL最常用的两个表类型。
MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECT,MyISAM是更好的选择。
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
对于支持事物的InnoDB类型的表,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。
基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。
MyIASM是IASM表的新版本,有如下扩展:
二进制层次的可移植性。
NULL列索引。
对变长行比ISAM表有更少的碎片。
支持大文件。
更好的索引压缩。
更好的键吗统计分布。
更好和更快的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://blog.51cto.com/929044991/997831
mysql的InnoDB和MyISAM对比相关推荐
- 一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM
聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了.所以今天在这里用最简短的语言让你明白这些 ...
- mysql聚集索引 myisam_一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM
版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/21aspnet/article/details/89303988 聚集索引和非聚集索引以及MySQL的 ...
- mysql索引innodb和myisam的区别
引用 引用 区别 InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一 ...
- InnoDB与MyISAM对比
2019独角兽企业重金招聘Python工程师标准>>> InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:M ...
- MySQL 数据库 InnoDB 和 MyISAM 数据引擎的差别
InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是 ...
- MySQL(三):InnoDB和MyISAM
文章目录 一.InnoDB 和 MyISAM的不同 一.InnoDB 和 MyISAM的不同 InnoDB 支持事务,MyISAM 不支持.对于InnoDB每一条SQL语言都默认封装成事务,自动提交, ...
- MySQL之innodb与myisam:锁 事务 外键 主键 存储结构 存储大小 索引 count 注重点
行锁:innodb支持行锁 事务:innodb支持事务 外键:MyISAM不支持InnoDB支持 主键:myisam允许没有索引和主键的表存在:innodb如果没有设定主键或者非空唯一索引,会生成一个 ...
- mysql myisam 优点_mysql引擎Innodb和Myisam对比介绍和优缺点
一.myisam引擎 1.mysql默认引擎,不支持事务* 2.表级锁定,更新时,锁定机制是整张表被锁定,其它连接无法更新表的数据,效率比较低下.锁的机制成本很少,但大大降低了并发性能* 3.读写互相 ...
- 面试题:MySQL的innodb和myisam
一 Innodb 1. 简介 索引是一种排好序的用于快速查找的数据结构. **根据官网手册InnoDB支持B-tree索引.聚簇索引(Clustered indexes).全文索引(Full-text ...
最新文章
- 13分页和shell命令行模式
- 教你如何rEFIt-让你开机免按option!
- POJ 1201 差分约束(集合最小元素个数)
- 《CCNA安全640-554认证考试指南》——6.4节复习所有考试要点
- 【多线程】ThreadPoolExecutor 类的使用详解
- Crawler:反爬虫之基于urllib库+伪装浏览器方式实现从各种网站上(以百度贴吧为例)获得你喜欢的照片下载到本地电脑上
- LeetCode精讲题 10正则表达式匹配(动态规划)
- Sonatype Nexus 库被删除的恢复方法
- AngularJS学习(一)
- 18. Element firstChild 属性
- 拓端tecdat|用Rapidminer做文本挖掘的应用:情感分析
- BOOTSTRAP学习之路(1)
- 20款优秀的基于浏览器的在线代码编辑器
- System Exception:故障解决:端口已被占用 1080--->的处理方法
- mysql系统结构图_MySQL架构图
- 干货丨DolphinDB即时编译(JIT)详解
- C语言——打鱼晒网问题
- Imagine中文文档
- 工程经济作业1答案_国开电大工程经济与管理阶段作业1答案
- 清华大学计算机陈蓓,清华大学2010级本科生新生代表座谈会举行
热门文章
- 基于jenkins的go语言项目自动化发布遇到的坑
- webpack 错误提示 Error: Can't resolve 'css-loader'或Error: Can't resolve 'style-loader'
- 敏捷测试中发现的一些问题及改进办法
- iOS字符串常用用法
- JavaEE实战班第十二天
- JavaEE实战班第六天
- 从AI到IA,你愿意买一个机器人伴侣同居吗?
- python实现简易聊天需要登录博客园zip下载_Python基于Socket实现简易多人聊天室的示例代码...
- 面试官问我平时怎么看源码的,我把这篇文章甩给他了。
- CTO总结的管理30条军规