bitsCN.com

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

InnoDB与Myisam的六大区别 MyISAMInnoDB构成上的区别:每个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%”bitsCN.com

相关标签: 存储 资料

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql innodb myisam 区别_InnoDB与MyISAM的六大区别_MySQL相关推荐

  1. mysql5.7 innodb myisam 区别_InnoDB与MyISAM的区别(高性能MySQL笔记)

    1.InnoDB支持事务,MyISAM不支持,也就是说MyISAM不支持事务回滚操作,这个功能可能是致命的 2.InnoDB支持行锁,MyISAM只支持表锁,不过InnoDB的行锁是建立在索引之上的, ...

  2. myisam为什么比innodb查询快_InnoDB 和 MyISAM的数据分布是什么样的?

    建表及插入数据 聚簇索引和非聚簇索引的数据分布有区别,以及对应的主键索引和二级索引的数据分布也有区别.下面我们看 InnoDB 和 MyISAM 是如何存储下面这个表: DROP TABLE IF E ...

  3. mysql innodb 读加锁_InnoDB 读大量数据时会加读锁么?

    结论 默认不会加读锁!但 MySQL InnoDB 的可重复读并不保证避免幻读,需要应用使用加锁读来保证.而这个加锁度使用到的机制就是 next-key locks. 隔离级别说明 MySQL Inn ...

  4. mysql innodb 修复表_Innodb 表修复

    摘要: 突然收到MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了.innodb表损坏不能通过repair table 等修复myisam的命令操作.现在记录下解决过程, ...

  5. mysql innodb 并发插入问题_包大量死锁错误_mysql innodb 并发插入问题,包大量死锁错误...

    开了10个并发写线程,没1000条记录批量提交一次,结果mysql包大量死锁错误! "Deadlock found when trying to get lock; try restarti ...

  6. Mysql 存储引擎有哪些以及MyISAM和InnoDB区别

    1.InnoDB 存储引擎 InnoDB 是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB 是默认的 MySQL引擎. 2.MyISAM 存储引擎 MyISAM 基 ...

  7. MySQL存储引擎InnoDB、MyISAM和MEMORY介绍详解和区别

    文章目录 MySQL存储引擎InnoDB.MyISAM和MEMORY介绍详解和区别 InnoDB存储引擎 特点 操作示例 创建InnoDB表 修改表引擎为InnoDB MyISAM存储引擎 特点 操作 ...

  8. mysql innodb和myisam_Mysql InnoDB和MyISAM的区别

    展开全部 InnoDB和MyISAM是在使用e69da5e887aa62616964757a686964616f31333335346134MySQL最常用的两个表类型,各有优缺点,视具体应用而定.基 ...

  9. MySQL 两种存储引擎:MyISAM与InnoDB对比及理解

    MySQL 两种存储引擎:MyISAM与InnoDB对比及理解 目前MySQL默认的存储引擎是InnoDB 现在大多数时候我们使用的都是InnoDB存储引擎,但是在某些情况下使用MyISAM更好,比如 ...

最新文章

  1. java- ASM 字节码操控框架
  2. linux下c语言俄罗斯方块,C语言实现俄罗斯方块源代码
  3. 关于 Delphi 中流的使用(2) 用 TFileStream(文件流) 读写
  4. 用Maven插件生成Mybatis代码
  5. 20080904--判断表单中的元素值是否改变了
  6. 01.elasticsearch请求使用的基本语法
  7. 银屑病与寿命的关系(调研手稿七)
  8. Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
  9. google浏览器调试
  10. Flutter入门进阶之旅(七)GestureDetector
  11. matlab猜数字游戏程序,matlab 猜数字小游戏
  12. yuv420p 详解_YUV格式介绍
  13. Origin introduction and install
  14. 十分简明易懂的FFT(快速傅里叶变换)
  15. DirectX12初始化三——DirectX图形基础结构,功能支持检测,资源驻留
  16. KKB:二进制知识:15瓶水,其中只有一瓶水有毒,请问至少需要几只小白鼠可以一次性喝出来?
  17. java 内部类,匿名内部类
  18. 自动驾驶中的SLAM
  19. emu8086汇编语言——简易学生成绩管理系统
  20. 一文助您轻松上手 Kyligence Zen,轻松变身数据达人

热门文章

  1. Springboot项目与vue项目整合打包
  2. 一维信号小波阈值去噪 c语言,一维信号小波阈值去噪
  3. 访问文件服务器提示“服务器存储空间不足”的解决方法
  4. git 创建分支提交远程分支
  5. HP 3PAR公用存储的妙用
  6. 如何从菜鸟成长为高手!
  7. 数据库快照,自定义函数与计算列
  8. linux gtk python,python-Linux上具有pygtk(gtk.gdk)的桌面/根窗口上的键盘/鼠标事件
  9. pgsql转储_十六进制转储如何工作
  10. 为什么要在WebAssembly中使用Rust?