mysql myisam innodb 区别
最近连续接到了两次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次插入/更新的负荷。
简单概括几点如下:
- 通过不上不难看出,MyIsam InnoDB的用途,Myisam主要适用于中小型数据量。InnoDB引擎适用于大数据量。上面已经讲得很清楚拉。著名的开源电子商务系统[magento]就是采用InnoDB创建。
- MyIsam写入速度比InnoDB快。
- 在使用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 区别相关推荐
- mysql innodb myisam 混合,MySQL MyIsam/InnoDB混合在一起的事务
在Oracle(或者, 应该说'一般'吗?), 我们考虑Transaction(事务)这样. 你要一个决定来处理一连的操作的时候, 你用Transaction(事务)处理进程然后Commit或者Rol ...
- MyISAM InnoDB 区别
转载:http://www.php100.com/html/webkaifa/database/Mysql/2011/0326/7789.html MyISAM 和 InnoDB 讲解 InnoDB和 ...
- MySQL MyISAM/InnoDB高并发优化经验
最近做的一个应用,功能要求非常简单,就是 key/value 形式的存储,简单的 INSERT/SELECT,没有任何复杂查询,唯一的问题是量非常大,如果目前投入使用,初期的单表 insert 频率约 ...
- [转载]MyISAM InnoDB 区别
MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别 为:MyISAM类型不支持事务处理等高级 ...
- mysql myisam/innodb高并发优化经验_MySQL MyISAM / PHP 高并发优化经验
最近做的一个应用,功能要求非常简单,就是 key/value 形式的存储,简单的 INSERT/SELECT,没有任何复杂查询,唯一的问题是量非常大,如果目前投入使用,初期的单表 insert 频率约 ...
- MySQL笔记10:engine=innodb和engine=myisam的区别和用法!
MYSQL中engine=innodb和engine=myisam的区别和用法! 区别 1.myisam类型不支持事务处理等高级处理,而innodb类型支持. 2.myisam类型的表强调的是性能,其 ...
- MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测) 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过 ...
- Mysql 存储引擎有哪些以及MyISAM和InnoDB区别
1.InnoDB 存储引擎 InnoDB 是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB 是默认的 MySQL引擎. 2.MyISAM 存储引擎 MyISAM 基 ...
- mysql存储引擎中INNODB和MyISAM的区别
切记:存储引擎是基于表的,而不是数据库. 存储引擎概念: MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不 ...
最新文章
- 学会Python后能找到什么工作,待遇如何?
- hessian原理解析二(服务端分析)
- java 线程之对象的同步和异步
- 少儿德国奎尔鱼油(QÜELL FISH OIL FOR JUNIOR )
- jQuery插件 -- Cookie插件jquery.cookie.js(转)
- NOIP 2012 Day2
- C语言大神进来看看这个题目
- php伪静态限制网页播放视频,学习猿地-php伪静态后html不能访问怎么办
- anaconda3卸载python_python从安装到到数据分析应用高手 Python语言基础知识
- 如何删除office2007、以及安装新版本office
- 缓存淘汰策略—LRU算法(java代码实现)
- 搭建Android开发环境 第二章
- vim设置Tab为空格
- TCP/IP以及Socket对象基本
- Android APK XML解析与反编译方法
- 电商OTA:如何评估社区产品?
- 常见的图像分割方法有以下几种
- JavaScript 中的继承:ES3、ES5 和 ES6
- ps怎么做油漆喷溅画效果
- vue父组件与子组件之间传值
热门文章
- 带宽与码元的关系_带宽、速率(波特率、比特率)和码元宽度简述
- 爬虫入门的基本原理,如果你连这些都不知道那你可以放弃爬虫了
- html大作业_杜绝家长作业 关键是如何监督
- 让word不显示计算机名作者,如何使word在其他电脑上也不显示回车符
- springBoot之过滤器和拦截器的使用
- 在LVM中恢复已删除的逻辑卷
- HDU4160(最小路径覆盖问题)
- 点分治问题 ----------- 2017杭州CCPC E.Master of Subgraph[bitset+点分治]
- 最大权值闭合子图的证明详解
- php递归内存,PHP递归的三种常用方式