最近连续接到了两次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。
分享到:
相关推荐
MyISAM InnoDB 区别 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的...
MySQL数据库系统提供了多种存储引擎,其中最常用的两种是MyISAM和InnoDB。它们各自具有独特的特性和适用场景,理解二者的性能差异对于优化数据库设计至关重要。 MyISAM引擎是MySQL早期的默认存储引擎,以其高速度和...
自己总结的 关于mysql存储引擎myisam innodb 的比较 两者区别 对面试会很有帮助
#### MyISAM与InnoDB的主要区别 1. **事务处理**: - MyISAM不支持事务,而InnoDB则支持ACID事务。 - 如果应用程序需要事务支持来保证数据的一致性和可靠性,应选择InnoDB。 2. **并发处理**: - MyISAM使用表...
MySQL存储引擎--MyISAM与InnoDB区别 MySQL是一种关系型数据库管理系统,它支持多种存储引擎,每种存储引擎都有其特点和优缺。MyISAM和InnoDB是MySQL中最常用的两种存储引擎,它们都有其优缺点,本文将对比MyISAM...
尽管本篇主要讨论InnoDB存储引擎,但仍值得简要提及InnoDB与之前的默认存储引擎MyISAM之间的区别: - **事务处理**:InnoDB支持事务处理,而MyISAM不支持。 - **行级锁定**:InnoDB支持行级锁定,提高了并发性能。 ...
《MySQL内核:InnoDB存储引擎 卷1》是一本深度探讨MySQL数据库系统核心部分——InnoDB存储引擎的专业书籍。这本书以超高清的PDF格式呈现,包含详细的书签,便于读者快速定位和查阅相关内容。InnoDB作为MySQL中最常用...
1. **数据处理方式**:InnoDB 和 MyISAM 在数据处理方面存在本质的区别。InnoDB 是一种行级锁定的存储引擎,支持事务处理,并且为每行记录都保存一个行锁,这使得它在高并发环境下的表现更佳。而 MyISAM 使用的是表...
在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问。为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的默认数据库引擎(5.5版之前),由...
本文实例讲述了mysql更改引擎(InnoDB,MyISAM)的方法,分享给大家供大家参考。具体实现方法如下: mysql默认的数据库引擎是MyISAM,不支持事务和外键,也可使用支持事务和外键的InnoDB。 查看当前数据库的所支持的...
### MyISAM与InnoDB对比分析 #### 一、数据存储区别 - **堆表**:数据无序存储,适用于不频繁更新的情况。 - **索引组织表**:表的数据和索引紧密关联,通常主键就是数据的物理排列顺序。 **MyISAM**: - 属于堆...
MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了。innodb表损坏不能通过repair table 等修复myisam的命令操作。
MySQL中的InnoDB和MyISAM是两种非常重要的存储引擎,它们各自有着独特的特性和适用场景。下面我们将深入探讨这两种引擎的主要区别。 首先,InnoDB是MySQL的默认存储引擎,它支持事务处理,这意味着用户可以执行诸如...
Mysql 的InnoDB引擎的相关笔记 1.0.MySQL架构到innoDB架构.md 1.1.0.InnoDB——简介.md 1.1.1.InnoDB——关键特性.md 1.2.0.InnoDB内存结构——缓冲池.md ...1.4.4.0.Mysql文件——MYISAM文件.md 1.5.0.InnoDB锁系列
在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。 2、MyISAM与InnoDB存储引擎的主要特点 MyISAM存储引擎的特点是:表级锁、不支持事务和全文索引,适合...
MyISAM和InnoDB是MySQL中两种最常使用的存储引擎,它们各有特点,适用于不同的应用场景。 1. **事务处理**: - **InnoDB** 支持ACID(原子性、一致性、隔离性、持久性)事务,提供事务安全,适合需要事务处理的...