MySQL myisam和innodb区别

2012年4月2日 发表评论 阅读评论

http://www.lampbrother.net/php/bencandy.php?fid=70&id=1480

题目1讲讲你对mysql myisaminnodb的认识。然后你认为他们的区别在那里?为什么?

答:这两个是MySQL主要存储引擎。

简要介绍来自官网。

简要介绍:myIsam

myIdam是默认存储引擎。它基于更老的ISAM代码,但有很多有用的扩展。(注意MySQL5.1不支持ISAM)。

每个myisam在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYDMYData)。索引文件的扩展名是.MYIMYIndex)。

简要介绍:InnoDB

InnoDBMySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。

InnoDB是为处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。

InnoDB存储引擎被完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在myisam表中每个表被存在分离的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。

InnoDB默认地被包含在MySQL二进制分发中。Windows Essentials installer使InnoDB成为WindowsMySQL的默认表。

InnoDB被用来在众多需要高性能的大型数据库站点上产生。著名的Internet新闻站点Slashdot.org运行在InnoDB上。Mytrix Inc.InnoDB上存储超过1TB的数据,还有一些其它站点在InnoDB上处理平均每秒800次插入/更新的负荷。

简单概括几点如下:

1.       
通过以上不难看出,myIsam InnoDB的用途,myisam主要适用于中小型数据量。InnoDB引擎适用于大数据量。上面已经讲得很清楚拉。著名的开源电子商务系统[magento]就是采用InnoDB创建。

2.       
myIsam写入速度比InnoDB快。

3.       
在使用InnoDB时候需要对my.cnf进行配置以保证MySQL达到最大效率。详细可以查看官网[inndo性能调节]
http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-tuning

其中有很多人在网上发表了关于mysql myIdamInnoDB在存贮和读取方面的差异。暂时还没有做过度研究。

基本测试都是基于使用[事务]和不使用[事务],进行对比。MySQL对于[非事务表]速度会比较块。

原因:待查证。

猜测:设定了innodb_flush_log_at_trx_commit如果设置为1的话,那么每次插入数据的时候都会自动提交,导致性能急剧下降,应该是跟刷新日志有关系,设置为0效率能够看到明显提升,当然,同样你可以SQL中提交[SET AUTOCOMMIT = 0]来设置达到好的性能。另外,还听说通过设置innodb_buffer_pool_size能够提升InnoDB的性能。

通过上面的分析,在我们采用MySQL存储引擎的时候要按需分配。针对不同的存储引擎要采用不同的数据设计。

题目2开发过程中,遇到糟糕的SQL语句你是怎么解决的。

答:使用MySQL的[EXPLAIN]对SQL进行解释。应该还有更多好方法。

MySQL常见问题可以查看:http://www.blags.org/mysql-error-daquan-and-solutions/

MySQL存储引擎的介绍 :http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html

以上如有不足之处,请大家帮忙补充,THK

作者:

Martin

博客地址:www.blags.org

原来网址www.blags.cn,后来遭到 cnnic禁止就没有使用了。

从事网络开发多年.工作过的公司: WebCrewChina

LAMP兄弟连资讯,转载请注明出处!本文只代表作者个人观点不代表LAMP兄弟连观点!如相关单位或相关个人发现问题,请直接与我们联系400-700-1307。


转载请注明来自:[MSN Spaces]http://msn.shandian.biz/134.html

  1. 本文目前尚无任何评论.