当前位置: 首页 > 面试题库 >

我应该总是比MyISAM更喜欢MySQL InnoDB吗?

邵繁
2023-03-14
问题内容

有人告诉我,InnoDB比MyISAM好得多。因此,当我创建表时,是否应该 始终 尝试使用InnoDB
Engine而不是MyISAM?还是两者都有很大的好处?


问题答案:

MyISAM是无事务的并且是堆组织的。记录由表中的行偏移量标识,索引将此偏移量存储为行指针。

InnoDB支持交易并按索引组织。记录由的值标识PRIMARY KEY(或PRIMARY KEY定义隐藏的内部列),并存储在中B-Tree。二级索引将的值存储PRIMARY KEY为行指针。

涉及全表扫描或二级索引查找的查询通常在MyISAM表上更快。

涉及PRIMARY KEY查找的查询通常在InnoDB表上更快。

MyISAM 表在表的元数据中存储表中的记录数,这就是为什么这样的查询:

SELECT  COUNT(*)
FROM    myisamtable

瞬间。

MyISAM表完全锁定在DML操作上(有几个例外)。

InnoDB表锁定单个记录和索引间隙,但是这些是记录和扫描的间隙,而不仅仅是WHERE条件匹配的记录和间隙。尽管它们不匹配,但这可能导致记录被锁定。

InnoDB表支持参照完整性FOREIGN KEYMyISAM桌子没有。

有几种情况可以显示两种引擎的优势。



 类似资料:
  • 我刚意识到谷歌将AdMob嵌入最新的Google Play服务(4+) 我这么问的原因是,我发现谷歌Play服务的AdMob仍然很有问题。 这是我的观察。 从Java代码创建一个智能横幅,并将其放在滚动视图的中间。 每当智能横幅从Google服务器成功获取广告时,滚动视图将自动滚动以使智能横幅可见。 演示该bug的完整源代码可以在这里找到:来自Google Play服务的AdMob将执行不希望的自

  • 我想使用的方法获取http://en.wikipedia.org的内容。 我发现en.wikiepdia.org同时有IPv4和IPv6地址: 如何使用IPv6地址访问该站点?

  • 问题内容: 是否可以在一个查询中将多个SQL LIKE通配符串在一起-像这样? 目的是查找同时包含通配符但没有特定顺序的记录。 问题答案: 正确的SQL语法是:

  • 问题内容: 复制整个数组时,我经常看到人们写: 但是在我看来,没有理由对此表示赞同: 无论如何,它们都是浅表副本。这些人可能只是不知道存在。那么有什么理由不使用吗? 问题答案: 否。 如果您 确实要进行微 基准测试,则可能取决于您正在运行的JVM。但是实际上,没有。

  • 喜欢资讯 取消喜欢资讯 资讯喜欢列表 喜欢资讯 POST /news/{news}/likes Response Headers Status: 201 Created 取消喜欢资讯 DELETE /news/{news}/likes Response Headers Status: 204 No Content 资讯喜欢列表 GET /news/{news}/likes Respons

  • 点喜欢 取消喜欢 喜欢的人列表 点喜欢 POST /feeds/:feed/like Response Status: 201 Created { "message": [ "操作成功" ] } 通知类型 { "channel": "feed:digg", // 通知关键字 "target": 325, // 动态id "content": "@2222 点喜欢了