[存储引擎基础知识]InnoDB与MyISAM的六大区别(非原创)
这其实是09年总结的一篇文章,今天被一位朋友问到InnoDB有什么好处,一下子讲不清楚,现在把在自己另外一个博客的文章在这里重发一遍,主要是讲InnoDB和MyISAM的对比,从中可以看到InnoDB的很多好处,比如并发插入的时候行级锁等
本 文主要整理了Mysql 两大常用的存储引擎MyISAM,InnoDB的六大常见区别,来源于Mysql手册以及互联网的资料
InnoDB与Myisam的六大区别 |
||
MyISAM | InnoDB | |
构 成上的区别: |
每个MyISAM在磁盘上存储成三个文件。第一个 文件的名字以表的名字开始,扩展名指出文件类型。
.frm文件存储表定义。 数据文件的扩 展名为.MYD (MYData)。 索引文件的扩 展名是.MYI (MYIndex)。 |
基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的 大小只受限于操作系统文件的大小,一般为 2GB |
事务处理上方面: | MyISAM类型的表强调的是性能,其执行数 度比InnoDB类型更快,但是不提供事务支持 | InnoDB提供事务支持事务,外部键等高级 数据库功能 |
SELECT UPDATE,INSERT,Delete操 作 | 如果执行大量的SELECT,MyISAM是更好的选择 |
1.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表
2.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的 删除。 3.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用 |
对AUTO_INCREMENT的 操作 |
每表一个AUTO_INCREMEN列的内部处理。
MyISAM为INSERT和UPDATE操 作自动更新这一列。这使得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的六大区别(非原创)相关推荐
- InnoDB与MyISAM的六大区别(转)
这其实是09年总结的一篇文章,今天被一位朋友问到InnoDB有什么好处,一下子讲不清楚,现在把在自己另外一个博客的文章在这里重发一遍,主要是讲InnoDB和MyISAM的对比,从中可以看到InnoDB ...
- mysql innodb myisam 区别_InnoDB与MyISAM的六大区别_MySQL
bitsCN.com 本文主要整理了Mysql 两大常用的存储引擎MyISAM,InnoDB的六大常见区别,来源于Mysql手册以及互联网的资料 InnoDB与Myisam的六大区别 MyISAMIn ...
- MySQL线上600W纪录的MyISAM表,要把存储引擎改为innoDB,一alter表就立马锁死的问题探讨
行业内部朋友企鹅上问: Sun Shine: 我线上有个数据库 大约600百万数据 我想把存储引擎改为innoDB, 现在表 平均每分钟有50个插入 ,已修改表就立马锁死,有什么好的办法吗? 黄杉 ...
- ibm服务器维护重点,IBM服务器存储维护基础知识.pptx
IBM服务器 存储维护基础知识;SYSTEM X86服务器硬件故障常用诊断方法1.观察法观察前后面板的指示灯;观察LPD指示灯判断问题LPD即Light path diagnostic,用IBM用来方 ...
- 【MySQL】MySQL的存储引擎和索引详解(聚集索引和非聚集索引)
目录 一.MySQL存储引擎 1.1 Innodb引擎 1.2 MyISAM引擎 1.3 InNoDB与MyISAM异同 1.4 两种引擎的选择 二.索引(Index) 2.1 InnoDB存储引擎 ...
- mysql 修改时间段内_详解mysql数据库MyISAM存储引擎如何转为Innodb及其中的注意点...
概述 mysql数据库存储引擎为MyISAM的时候,在大访问量的情况下数据表有可能会出现被锁的情况,这就会导致用户连接网站时超时而返回502,此时就需要MySQL数据库MyISAM存储引擎转为Inno ...
- InnoDB存储引擎基础
分布式存储中指明了存储的下层就是存储引擎,所以就拿一个实际的存储引擎进行学习了解,存储引擎究竟是如何操作使用的.下面对InnoDB存储引擎做一个简单的总结. 1.什么是InnoDB存储引擎,在此存储引 ...
- MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)
MySQL中的存储引擎: 1.存储引擎的概念 2.查看MySQL所支持的存储引擎 3.MySQL中几种常用存储引擎的特点 4.存储引擎之间的相互转化 一.存储引擎 1.存储引擎其实就是如何实现存储数据 ...
- mysql 5.7 存储引擎_mysql5.7——innodb存储引擎总结
一.innodb初探: 1.MySQL日志文件: ①:slow.log 文件会记录慢查询日志,当一条语句执行时间超过在配置参数long_query_time中指定的值时,这条语句就会被记录在这个文件中 ...
最新文章
- 修改git的远程仓库命令
- Lync 手机客户端登录过程
- AI创作神器GAN的演变全过程
- 网站推广——网站推广专员浅析如何轻松完成网站关键词优化?
- python 画柱状图-python使用Plotly绘图工具绘制柱状图
- 关于错误的那点事——惨不忍睹的错误
- sql 获取两个月内数据_如何在3个月的时间内自学成为数据分析师?
- Common BeanUtils组件的使用(源码)
- mysql双机数据热备份_配置MySQL数据库双机热备份
- 透明loading_四步搞定小菊花 Loading 动画
- java batik_java – Batik传递库依赖项
- 数理统计——随机过程
- 矩阵分析与应用课程资料
- vb.net怎么和mysql连接_解析VB.NET如何连接数据库
- WPS Office宏病毒实现shell反弹
- 暑假多看看英文原版电影
- 可以删除电脑文件的c语言程序,win7c盘哪些文件可以删除?其删除方法介绍
- [生存志] 第20节 历代大事件概览 隋朝
- 数据分析之实战项目——电商用户行为分析【python】
- alot英文怎么读_漂亮的英文是什么英语怎么说
热门文章
- 浅谈C/C++中的typedef和#define
- 排序算法——归并排序
- 计算机网络:05---网络类型:局域网、城域网、广域网、个域网、无线网络
- php 离线 gis,在 Web 页面中使用离线地图
- [转]ROS2 源码解析与实践 - Node
- html去掉父元素样式,CSS清除浮动使父级元素展开的三个方法
- python列表常用方法_python之 列表常用方法
- ActionBarDisplayOptions展示选项的菜单
- Loadrunner 入门连载教程
- JasperReport学习笔记2-创建简单的报表例子