返回列表 发新帖

mysql 的存储引擎,myisam和innodb的区别

331.8k 9
swmozowtfl 发表于 2015-7-15 20:24:39|湖北 | 查看全部 阅读模式
简单的表达。
( x; f/ o1 P9 ?2 V3 ?  v9 y7 p0 kmyisam 是非事务的存储引擎。8 j- m+ _6 d8 S% f. O
innodb是支持事务的存储引擎。" a4 [: E) E+ X* y( Z7 `
innodb的引擎比较适合于插入和更新操作比较多的应用
7 D; A0 t6 m! a- L' t& n而myisam 则适合用于频繁查询的应用, g9 o3 k# S1 L! X6 p
myisam --表锁。
) h0 `+ L) z+ Jinnodb--设计合理的话是行锁。5 Q3 Q$ l, ~( t# y* C: z
myisam 不会出现死锁。
4 N1 C' u$ Z, A) b2 U最大的区别就是myisam适合小数据,小并发;innodb 适合大数据,大并发。最大的区别就是在锁的级别上。' W* t7 c! K$ w( S9 z3 I  ^/ l, q4 d
myisam类型不支持事务处理等高级处理,而innodb类型支持。 myisam类型的表强调的是性能,其执行数度比innodb类型更快,但是不提供事务支持,而innodb提供事务支持已经外部键等高级数据库功能。综述,就可以根据数据表不同的用处是用不同的存储类型。而且myisam是文件存储的,可以进行直接在不同操作系统间拷贝使用。' v2 Z& B* L7 \) y, ~1 Q( {/ }2 ?
innodb:
( P$ ~% b# i/ N9 r$ xinnodb 给 mysql 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (acid compliant))型表。innodb 提供了行锁(locking on row level),提供与 oracle 类型一致的不加锁读取(non-locking read in selects)。这些特性均提高了多用户并发操作的性能表现。在innodb表中不需要扩大锁定(lock escalation),因为 innodb 的列锁定(row level locks)适宜非常小的空间。innodb 是 mysql 上第一个提供外键约束(foreign key constraints)的表引擎。innodb 的设计目标是处理大容量数据库系统,它的 cpu 利用率是其它基于磁盘的关系数据库引擎所不能比的。在技术上,innodb 是一套放在 mysql 后台的完整数据库系统,innodb 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 innodb 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 myisam 中,表被存放在单独的文件中。innodb 表的大小只受限于操作系统的文件大小,一般为 2 gb。innodb所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,可以拷贝文件或用navicat for mysql。2 I+ P$ {' `! m/ T9 \8 N8 ?' |0 `
myisam
3 g1 q$ ~4 Q+ q; y& Y5 @  l每张myisam 表被存放在三个文件 :frm 文件存放表格定义。 数据文件是myd (mydata) 。 索引文件是myi (myindex) 引伸。
! I  ^. x- Q4 V& ]% O8 F+ J因为myisam相对简单所以在效率上要优于innodb,小型应用使用myisam是不错的选择。7 u) o, R7 G( k9 L: O6 ~7 N
myisam表是保存成文件的形式,在跨平台的数据转移中使用myisam存储会省去不少的麻烦" E, @  f5 r. j4 d$ Q
以下是一些细节和具体实现的差别:5 Q0 `8 |, \) e0 G! V7 Y4 P9 Z1 @" o3 R
1.innodb不支持fulltext类型的索引。7 D( Z* s: h; }9 o0 H+ T. e! e2 o. A) N
2.innodb 中不保存表的具体行数,也就是说,执行select count(*) from table时,innodb要扫描一遍整个表来计算有多少行,但是myisam只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
& ~/ z7 ^, B5 G, G0 y+ `/ M3.对于auto_increment类型的字段,innodb中必须包含只有该字段的索引,但是在myisam表中,可以和其他字段一起建立联合索引。
* I( \/ I+ |- {2 E0 M0 `$ R; ~" y4.delete from table时,innodb不会重新建立表,而是一行一行的删除。; @/ r/ Y" {4 n& R
5.load table from master操作对innodb是不起作用的,解决方法是首先把innodb表改成myisam表,导入数据后再改成innodb表,但是对于使用的额外的innodb特性(例如外键)的表不适用。
9 R2 s# c  [0 u! g, g9 v; Z/ V4 z1 R4 W8 ?& m0 |2 ~
更多网页制作信息请查看: 网页制作

回复|共 9 个

effoggikeftor 发表于 2015-11-30 09:58:59|山东 | 查看全部
此贴有意思~
alapScady 发表于 2015-11-30 09:59:30|澳大利亚 | 查看全部
教教我怎么seo
wwdu926a 发表于 2015-11-30 09:59:33|中国 | 查看全部
激动了就不好办了..
effoggikeftor 发表于 2015-11-30 10:00:03|美国 | 查看全部
来电来函..欢迎洽购...
alapScady 发表于 2015-12-23 17:24:47|INNA | 查看全部
下流~~~~加~~~~~至极~~~~~~
effoggikeftor 发表于 2015-12-23 17:25:02|美国 | 查看全部
(⊙o⊙)…好长啊,我虽然回复不了那么多字,但十五字还是有的。
gevaemaidovef 发表于 2015-12-23 17:25:40|美国 | 查看全部
哎 我我我怎么办啊??
alapScady 发表于 2015-12-23 17:25:58|IANA | 查看全部
哈哈 怎么说来眼睛小真的很好 哈 哈哈~~~~
mwxny 发表于 2015-12-23 17:26:12|台湾 | 查看全部
哥们,给我做个链接吧

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

得知互动是一个融创意、设计、开发、营销、生活、互联网于一体的专业交流分享平台。
Copyright © 2026 得知互动-专注Ai与站长技术交流社区-Ai交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 在本版发帖 扫一扫添加QQ客服 返回顶部
快速回复 返回顶部 返回列表