这其实是09年总结的一篇文章,今天被一位朋友问到InnoDB有什么好处,一下子讲不清楚,现在把在自己另外一个博客的文章在这里重发一遍,主要是讲InnoDB和MyISAM的对比,从中可以看到InnoDB的很多好处,比如并发插入的时候行级锁等

本 文主要整理了Mysql 两大常用的存储引擎MyISAM,InnoDB的六大常见区别,来源于Mysql手册以及互联网的资料

InnoDBMyisam的六大区别

  MyISAM InnoDB
构 成上的区别: 每个MyISAM在磁盘上存储成三个文件。第一个 文件的名字以表的名字开始,扩展名指出文件类型。

.frm文件存储表定义。

数据文件的扩 展名为.MYD (MYData)。

索引文件的扩 展名是.MYI (MYIndex)。

基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的 大小只受限于操作系统文件的大小,一般为 2GB
事务处理上方面: MyISAM类型的表强调的是性能,其执行数 度比InnoDB类型更快,但是不提供事务支持 InnoDB提供事务支持事务,外部键等高级 数据库功能
SELECT UPDATE,INSERTDelete操 作 如果执行大量的SELECT,MyISAM是更好的选择 1.如果你的数据执行大量的INSERTUPDATE,出于性能方面的考虑,应该使用InnoDB表

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

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

AUTO_INCREMENT的 操作 每表一个AUTO_INCREMEN列的内部处理。

MyISAMINSERTUPDATE操 作自动更新这一列。这使得AUTO_INCREMENT列更快(至少10%)。在序列顶的值被删除之后就不 能再利用。(当AUTO_INCREMENT列被定义为多列索引的最后一列, 可以出现重使用从序列顶部删除的值的情况)。

AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置

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

更好和更快的auto_increment处理

如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数 器的计数器,它被用在为该列赋新值。

自动增长计数 器仅被存储在主内存中,而不是存在磁盘上

关于该计算器 的算法实现,请参考

AUTO_INCREMENT列 在InnoDB里 如何工作

表 的具体行数 select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的 InnoDB 中不 保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行
表锁 提供行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in
SELECTs),另外,InnoDB表的行锁也不是绝对的,如果在执 行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”
本文原出处为 http://www.dbahacker.com

转载于:https://www.cnblogs.com/zhongyuan/archive/2012/11/06/2756949.html

[存储引擎基础知识]InnoDB与MyISAM的六大区别(非原创)相关推荐

  1. InnoDB与MyISAM的六大区别(转)

    这其实是09年总结的一篇文章,今天被一位朋友问到InnoDB有什么好处,一下子讲不清楚,现在把在自己另外一个博客的文章在这里重发一遍,主要是讲InnoDB和MyISAM的对比,从中可以看到InnoDB ...

  2. mysql innodb myisam 区别_InnoDB与MyISAM的六大区别_MySQL

    bitsCN.com 本文主要整理了Mysql 两大常用的存储引擎MyISAM,InnoDB的六大常见区别,来源于Mysql手册以及互联网的资料 InnoDB与Myisam的六大区别 MyISAMIn ...

  3. MySQL线上600W纪录的MyISAM表,要把存储引擎改为innoDB,一alter表就立马锁死的问题探讨

    行业内部朋友企鹅上问: Sun Shine: 我线上有个数据库  大约600百万数据 我想把存储引擎改为innoDB, 现在表 平均每分钟有50个插入 ,已修改表就立马锁死,有什么好的办法吗? 黄杉 ...

  4. ibm服务器维护重点,IBM服务器存储维护基础知识.pptx

    IBM服务器 存储维护基础知识;SYSTEM X86服务器硬件故障常用诊断方法1.观察法观察前后面板的指示灯;观察LPD指示灯判断问题LPD即Light path diagnostic,用IBM用来方 ...

  5. 【MySQL】MySQL的存储引擎和索引详解(聚集索引和非聚集索引)

    目录 一.MySQL存储引擎 1.1  Innodb引擎 1.2 MyISAM引擎 1.3 InNoDB与MyISAM异同 1.4 两种引擎的选择 二.索引(Index) 2.1 InnoDB存储引擎 ...

  6. mysql 修改时间段内_详解mysql数据库MyISAM存储引擎如何转为Innodb及其中的注意点...

    概述 mysql数据库存储引擎为MyISAM的时候,在大访问量的情况下数据表有可能会出现被锁的情况,这就会导致用户连接网站时超时而返回502,此时就需要MySQL数据库MyISAM存储引擎转为Inno ...

  7. InnoDB存储引擎基础

    分布式存储中指明了存储的下层就是存储引擎,所以就拿一个实际的存储引擎进行学习了解,存储引擎究竟是如何操作使用的.下面对InnoDB存储引擎做一个简单的总结. 1.什么是InnoDB存储引擎,在此存储引 ...

  8. MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)

    MySQL中的存储引擎: 1.存储引擎的概念 2.查看MySQL所支持的存储引擎 3.MySQL中几种常用存储引擎的特点 4.存储引擎之间的相互转化 一.存储引擎 1.存储引擎其实就是如何实现存储数据 ...

  9. mysql 5.7 存储引擎_mysql5.7——innodb存储引擎总结

    一.innodb初探: 1.MySQL日志文件: ①:slow.log 文件会记录慢查询日志,当一条语句执行时间超过在配置参数long_query_time中指定的值时,这条语句就会被记录在这个文件中 ...

最新文章

  1. 修改git的远程仓库命令
  2. Lync 手机客户端登录过程
  3. AI创作神器GAN的演变全过程
  4. 网站推广——网站推广专员浅析如何轻松完成网站关键词优化?
  5. python 画柱状图-python使用Plotly绘图工具绘制柱状图
  6. 关于错误的那点事——惨不忍睹的错误
  7. sql 获取两个月内数据_如何在3个月的时间内自学成为数据分析师?
  8. Common BeanUtils组件的使用(源码)
  9. mysql双机数据热备份_配置MySQL数据库双机热备份
  10. 透明loading_四步搞定小菊花 Loading 动画
  11. java batik_java – Batik传递库依赖项
  12. 数理统计——随机过程
  13. 矩阵分析与应用课程资料
  14. vb.net怎么和mysql连接_解析VB.NET如何连接数据库
  15. WPS Office宏病毒实现shell反弹
  16. 暑假多看看英文原版电影
  17. 可以删除电脑文件的c语言程序,win7c盘哪些文件可以删除?其删除方法介绍
  18. [生存志] 第20节 历代大事件概览 隋朝
  19. 数据分析之实战项目——电商用户行为分析【python】
  20. alot英文怎么读_漂亮的英文是什么英语怎么说

热门文章

  1. 浅谈C/C++中的typedef和#define
  2. 排序算法——归并排序
  3. 计算机网络:05---网络类型:局域网、城域网、广域网、个域网、无线网络
  4. php 离线 gis,在 Web 页面中使用离线地图
  5. [转]ROS2 源码解析与实践 - Node
  6. html去掉父元素样式,CSS清除浮动使父级元素展开的三个方法
  7. python列表常用方法_python之 列表常用方法
  8. ActionBarDisplayOptions展示选项的菜单
  9. Loadrunner 入门连载教程
  10. JasperReport学习笔记2-创建简单的报表例子