MySQL中InnoDB和MyISAM的差别[网站美工]
本文“MySQL中InnoDB和MyISAM的差别[网站美工]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
InnoDB和MyISAM是在利用MySQL最常用的两个表范例,各有优缺陷,视具体利用而定.下面是已知的二者之间的差别,仅供参考.
innodb
InnoDB 给 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.
在http://www.innodb.com/ 上可以找到 InnoDB 最新的信息.InnoDB 手册的最新版本老是被安排在那边,并且在那边可以得到 InnoDB 的商业答应(order commercial licenses)以及支持.
InnoDB 目前(2001年十月)在一些大的需高性能的数据库站点上被利用.闻名的 Internet 新闻站点 Slashdot.org 就是利用的InnoDB. Mytrix, Inc. 在 InnoDB 表上存储了超越1TB 的数据,并且别的的一个站点在 InnoDB 表上处理着平均每秒 800 次的插入/更新的负载.
MyISAM
MyISAM 是MySQL缺省存贮引擎.
每张MyISAM 桌被存放在盘在三个文件 .frm 文件存放表格定义. 数据文件是MYD (MYData) . 索引文件是MYI (MYIndex) 引伸.
以下是二者一些细节和具体实现的差别:
1.InnoDB不支持FULLTEXT范例的索引.
2.InnoDB 中不保存表的具体行数,也就是说,履行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数便可.注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的.
3.关于AUTO_INCREMENT范例的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一同成立结合索引.
4.DELETE FROM table时,InnoDB不会重新成立表,而是一行一行的删除.
5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,办理办法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是关于利用的额外的InnoDB特点(比方外键)的表不实用.
别的,InnoDB表的行锁也不是绝对的,假如在履行一个SQL语句时MySQL不能肯定要扫描的范围,InnoDB表一样会锁全表,比方update table set num=1 where name like “%aaa%”
以上是“MySQL中InnoDB和MyISAM的差别[网站美工]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |