最近连续接到了两次tencent的电话面试,当然不是同一个部门。都涉及到了一个mysql的基础知识问题。为了防止第三次打电话来,备注下。^^。

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

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

简要介绍来自官网。

简要介绍:MyIsam

MyISAM是 默认存储引擎。它基于更老的ISAM代码,但有很多有用的扩展。(注意MySQL 5.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性能调节]:http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-tuning。

其中有很多人在网上发表了关于mysql MyIsam 和 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。

本文链接地址: mysql myisam innodb 区别


转载于:https://www.cnblogs.com/chinacode/articles/1814390.html

mysql myisam innodb 区别相关推荐

  1. mysql innodb myisam 混合,MySQL MyIsam/InnoDB混合在一起的事务

    在Oracle(或者, 应该说'一般'吗?), 我们考虑Transaction(事务)这样. 你要一个决定来处理一连的操作的时候, 你用Transaction(事务)处理进程然后Commit或者Rol ...

  2. MyISAM InnoDB 区别

    转载:http://www.php100.com/html/webkaifa/database/Mysql/2011/0326/7789.html MyISAM 和 InnoDB 讲解 InnoDB和 ...

  3. MySQL MyISAM/InnoDB高并发优化经验

    最近做的一个应用,功能要求非常简单,就是 key/value 形式的存储,简单的 INSERT/SELECT,没有任何复杂查询,唯一的问题是量非常大,如果目前投入使用,初期的单表 insert 频率约 ...

  4. [转载]MyISAM InnoDB 区别

    MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别 为:MyISAM类型不支持事务处理等高级 ...

  5. mysql myisam/innodb高并发优化经验_MySQL MyISAM / PHP 高并发优化经验

    最近做的一个应用,功能要求非常简单,就是 key/value 形式的存储,简单的 INSERT/SELECT,没有任何复杂查询,唯一的问题是量非常大,如果目前投入使用,初期的单表 insert 频率约 ...

  6. MySQL笔记10:engine=innodb和engine=myisam的区别和用法!

    MYSQL中engine=innodb和engine=myisam的区别和用法! 区别 1.myisam类型不支持事务处理等高级处理,而innodb类型支持. 2.myisam类型的表强调的是性能,其 ...

  7. MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)

    MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测) 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过 ...

  8. Mysql 存储引擎有哪些以及MyISAM和InnoDB区别

    1.InnoDB 存储引擎 InnoDB 是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB 是默认的 MySQL引擎. 2.MyISAM 存储引擎 MyISAM 基 ...

  9. mysql存储引擎中INNODB和MyISAM的区别

    切记:存储引擎是基于表的,而不是数据库. 存储引擎概念: MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不 ...

最新文章

  1. 学会Python后能找到什么工作,待遇如何?
  2. hessian原理解析二(服务端分析)
  3. java 线程之对象的同步和异步
  4. 少儿德国奎尔鱼油(QÜELL FISH OIL FOR JUNIOR )
  5. jQuery插件 -- Cookie插件jquery.cookie.js(转)
  6. NOIP 2012 Day2
  7. C语言大神进来看看这个题目
  8. php伪静态限制网页播放视频,学习猿地-php伪静态后html不能访问怎么办
  9. anaconda3卸载python_python从安装到到数据分析应用高手 Python语言基础知识
  10. 如何删除office2007、以及安装新版本office
  11. 缓存淘汰策略—LRU算法(java代码实现)
  12. 搭建Android开发环境 第二章
  13. vim设置Tab为空格
  14. TCP/IP以及Socket对象基本
  15. Android APK XML解析与反编译方法
  16. 电商OTA:如何评估社区产品?
  17. 常见的图像分割方法有以下几种
  18. JavaScript 中的继承:ES3、ES5 和 ES6
  19. ps怎么做油漆喷溅画效果
  20. vue父组件与子组件之间传值

热门文章

  1. 带宽与码元的关系_带宽、速率(波特率、比特率)和码元宽度简述
  2. 爬虫入门的基本原理,如果你连这些都不知道那你可以放弃爬虫了
  3. html大作业_杜绝家长作业 关键是如何监督
  4. 让word不显示计算机名作者,如何使word在其他电脑上也不显示回车符
  5. springBoot之过滤器和拦截器的使用
  6. 在LVM中恢复已删除的逻辑卷
  7. HDU4160(最小路径覆盖问题)
  8. 点分治问题 ----------- 2017杭州CCPC E.Master of Subgraph[bitset+点分治]
  9. 最大权值闭合子图的证明详解
  10. php递归内存,PHP递归的三种常用方式