0

0

关于Mysql存储引擎InnoDB和Myisam的六大区别讲解

怪我咯

怪我咯

发布时间:2017-05-07 11:39:03

|

1598人浏览过

|

来源于php中文网

原创

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%”

LongCat AI
LongCat AI

美团推出的AI对话问答工具

下载

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

0

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

20

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

62

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.8万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 804人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号