MySQL myisam和innodb区别
来源:互联网 发布:济南编程培训学校 编辑:程序博客网 时间:2024/05/23 17:53
最近连续接到了两次Tencent的电话面试,当然不是同一个部门。都涉及到了一个MySQL的基础知识问题。为了防止第三次打电话来,备注下。^_^。 题目1:讲讲你对mysql myisam和innodb的认识。然后你认为他们的区别在那里?为什么? 答:这两个是MySQL主要存储引擎。 简要介绍来自官网。 简要介绍:myIsam myIdam是默认存储引擎。它基于更老的ISAM代码,但有很多有用的扩展。(注意MySQL5.1不支持ISAM)。 每个myisam在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD(MYData)。索引文件的扩展名是.MYI(MYIndex)。 简要介绍:InnoDB InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(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成为Windows上MySQL的默认表。 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性能调节]: 其中有很多人在网上发表了关于mysql myIdam和InnoDB在存贮和读取方面的差异。暂时还没有做过度研究。 基本测试都是基于使用[事务]和不使用[事务],进行对比。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
http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-tuning。
- MySQL myisam和innodb区别
- MySQL myisam和innodb区别
- mysql:InnoDB和MyISAM区别
- MySQL MyISAM和InnoDB区别
- mysql myisam innodb 区别
- mysql myisam innodb 区别
- mysql MyISAM InnoDB 区别
- mysql MyISAM InnoDB 区别
- mysql中MyISAM和InnoDB的区别
- mysql innodb 和myisam的区别
- mysql中MyISAM和InnoDB的区别
- MySql InnoDB和MyISAM 的区别
- MySQL: MyISAM和InnoDB的区别
- mysql表类型MyISAM和InnoDB区别
- MySQL中MyISAM和InnoDB的区别
- mysql的 InnoDB 和 MyISAM 区别
- Mysql InnoDB和MyISAM的区别
- mysql InnoDB和MyISAM的区别
- 停止编程
- 提取sybase数据库结构
- 在.NET中 DAL+IDAL+Model+BLL+Web
- 在IAR环境下,lpc2478 用户程序的地址及中断向量设置
- Silverlight 2.5D RPG游戏技巧与特效处理:(二十一)自定义路径动画
- MySQL myisam和innodb区别
- ★ Visual Studio 2008 每日小窍门 【持续发布ing~】 Tips:042
- 原型设计工具Balsamiq Mockups
- 简洁、明晰!数据库设计三大范式应用实例剖析
- MAT
- 零售业100个创意促销方案
- Sleep Sort
- 地理坐标系 vs. 投影坐标系
- HTML5资源汇总