视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MyISAMVSInnoDBMySQL存储引擎的选择
2020-11-09 13:19:44 责编:小采
文档

大多数面试的人都比较喜欢问的问题。 说说 MySQL存储引擎的选择。 MySQL的存储引擎太多了, 比较有名的都有七八个, 具体哪些就不一一列出来了, 最常用的只有两种, 如题, 就是 MyISAM 和 InnoDb. 我们从两个方面来讲一下 MyISAM和 InnoDB 的区别, 功能方

大多数面试的人都比较喜欢问的问题。

说说 MySQL存储引擎的选择。 MySQL的存储引擎太多了, 比较有名的都有七八个, 具体哪些就不一一列出来了, 最常用的只有两种, 如题, 就是 MyISAM 和 InnoDb. 我们从两个方面来讲一下 MyISAM和 InnoDB 的区别, 功能方面和性能方面, 先实现功能再追求性能!

功能部分

  1. InnoDB 支持事务, MyISAM不支持。 虽说 MyiSAM下边也可以 set autocommit =0 ; 但是修改数据是直接写磁盘的!
  2. InnoDB 支持外键, MyISAM不支持。
  3. MyISAM 支持全文索引(Fulltext Index) , InnoDB 不支持。

性能部分

跟性能相关的最重要的区别就是 MyISAM 和 InnoDB 实现的锁机制不一样! MyISAM 使用的是表锁, 而 InnoDB实现的是行锁。

我也装逼一下, 先介绍一下锁。 在多个线程同时操作一张表里的某条数据的时候, 有人读有人写 这样不是一团糟了。 所以要操作之前先把资源给锁起来, 在你操作的过程中别人不的过来干涉。 锁分为两种, 一种是读锁, 在读的时候不允许其他线程写, 允许其他的线程同时读, 还有一种是写锁, 在操作的时候不允许其他的线程读写。

MyISAM跟InnoDB不同的是, MyISAM 锁的是整张表, 而InnoDB是锁定的要操作的行, 相比MyISAM来说 InnoDB 还要多出来一步操作就是先要找到目标行, 增加了复杂度和操作时间, 但是也高并发, 因为只锁定要操作的行, 所以可以多个线程同时操作(只要不操作其他线程已经锁定的行)。

OK, 下结论的时候到了: 对于主要是Insert和select操作的表选择MyISAM存储引擎, 对频繁更新对并发性要求比较高的数据表采用InnoDB存储引擎会更好一些。

了解了上边的这么多面试应该没什么大的问题了, 但是锁的机制远远是没有这么简单的, 尤其是InnoDB存储引擎的锁机制, 还要跟事务牵扯到一起, 比较复杂, 这里就不再多说, 敬请继续关注我的博客: http://www.phpv5.com

声明: 本文采用 CC BY-NC-SA 3.0 协议进行授权

转载请注明来源:小景的博客

本文链接地址:http://www.phpv5.com/blog/archives/259/

下载本文
显示全文
专题