我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

mysql经典面试题,innodbmyisam这两个引擎有什么区别?本文里面,苏南大叔就说说个人的理解。肯定不是标准答案,因为网络流程的标准答案,也是很难理解的,对不?

苏南大叔:mysql存储引擎有哪些?InnoDB和MyISAM选哪个? - mysql存储引擎
mysql存储引擎有哪些?InnoDB和MyISAM选哪个?(图4-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。本文测试环境:win10mysql@5.7.26mysql-front@5.3

有哪些存储引擎

mysql引擎这事,其实对于大多数人无感,默认的就是innodb。可以通过下面这条命令,看看mysql都支持什么引擎。

show engines;

苏南大叔:mysql存储引擎有哪些?InnoDB和MyISAM选哪个? - show-engines
mysql存储引擎有哪些?InnoDB和MyISAM选哪个?(图4-2)

结果显示:除了innodbmyisammysql还支持很多引擎,但是不怎么使用,从来没有听说谁用过。

数据表设置引擎

mysql建立数据表的时候,可以设置使用哪个存储引擎的,也就是说可以某个表使用某个存储引擎。
建表语句如下:

CREATE TABLE `innodb` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

关键点:ENGINE=InnoDB

苏南大叔:mysql存储引擎有哪些?InnoDB和MyISAM选哪个? - innodb建表
mysql存储引擎有哪些?InnoDB和MyISAM选哪个?(图4-3)

选哪个引擎

一般情况下,大家只在InnoDBMyISAM之中做选择,其它引擎很少用。

  • 一般来说,应该选择InnoDB,理由很简单,支持事务和外键,其可以做行级锁。
  • 不需要事务不需要外键的话(这事儿也挺常见),使用MyISAM也是可以的。虽然不支持事务,但是支持表级锁,对于查询操作友好速度快。
引擎事务外键速度容灾
InnoDByesyes表锁+行锁没觉得比myisam慢有方案
MyISAMnono表锁据说快,对select非常友好无,但是日常没备份么?

物理文件

既然是存储引擎,两者在物理存储的文件上,还是有较大区别的。截图所示:

苏南大叔:mysql存储引擎有哪些?InnoDB和MyISAM选哪个? - 文件存储引擎
mysql存储引擎有哪些?InnoDB和MyISAM选哪个?(图4-4)

结语

权衡利弊之下,大多数人选择的就是默认的创新“InnoDB”引擎。更多mysql经典经验文章,请点击苏南大叔的博客链接:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   mysql