最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

大厂面试题:请你说说innodb和myisam的区别?

XAMPP新闻 admin 208浏览 0评论

一、得分点

事务、锁、读写性能、存储结构

二、标准回答

InnoDB是具有事务、回滚和崩溃修复能力的事务安全型引擎,它可以实现行级锁来保证高性能的大量数据中的并发操作;MyISAM是具有默认支持全文索引、压缩功能及较高查询性能的非事务性引擎。

具体来说,可以在以下角度上形成对比: 

事务:InnoDB支持事务;MyISAM不支持。 

数据锁:InnoDB支持行级锁;MyISAM只支持表级锁。 

读写性能:InnoDB增删改性能更优;MyISAM查询性能更优。 

全文索引:InnoDB不支持(但可通过插件等方式支持);MyISAM默认支持。 

外键:InnoDB支持外键;MyISAM不支持。 

存储结构:InnoDB在磁盘存储为一个文件;MyISAM在磁盘上存储成三个文件(表定义、数据、索引)。 

存储空间:InnoDB需要更多的内存和存储;MyISAM支持支持三种不同的存储格式:静态表(默认)、动态表、压缩表。 

移植:InnoDB在数据量小时可通过拷贝数据文件、备份 binlog、mysqldump工具移植,数据量大时比较麻烦;可单独对某个表通过拷贝表文件移植。 

崩溃恢复:InnoDB有崩溃恢复机制;MyISAM没有。 

默认推荐:InnoDB是MySQL5.5之后的默认引擎。 

三、加分回答 

InnoDB中行级锁是怎么实现的?InnoDB行级锁是通过给索引上的索引项加锁来实现的。只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁。当表中锁定其中的某几行时,不同的事务可以使用不同的索引锁定不同的行。另外,不论使用主键索引、唯一索引还是普通索引,InnoDB都会使用行锁来对数据加锁。

转载请注明:XAMPP中文组官网 » 大厂面试题:请你说说innodb和myisam的区别?

您必须 登录 才能发表评论!