0

我读到 Innodb 最好在同时获得大量插入记录的表上使用。我的应用程序每秒获得大约 50 条记录。所以对于这些表我应该使用 Innodb,对吗?

另一方面,我有一些仅用于选择的表,它们很少更新或几乎没有新插入。选择 MyIsam 是否更快?如果是这种情况,最好将一些表留给 MyIsam,而将一些表留给 Innodb,或者我应该使用相同引擎的所有表?

我的应用程序还在我想在 Innodb 中传递的表上进行大量搜索。我应该怎么办 ?

4

3 回答 3

2

你可以检查这些:

使用 MyISAM 的原因:

  • 表对于选择繁重的负载来说真的很快
  • 表级锁限制了它们在写入密集型多用户环境中的可扩展性。
  • 最小的磁盘空间消耗
  • 全文索引
  • 合并和压缩表。

使用 InnoDB 的原因:

  • ACID 事务
  • 行级锁定
  • 一致的读取——让您达到出色的读写并发性。
  • 主键集群——在某些情况下提供出色的性能。
  • 外键支持。
  • 索引页和数据页都可以缓存。
  • 自动崩溃恢复——如果 MySQL 关闭不干净,InnoDB 表仍然会
  • 恢复到一致状态 - 不需要像 MyISAM 那样的检查修复。所有更新都必须通过 InnoDB 中的事务引擎,与 非事务存储引擎
    相比,这通常会降低性能。

从这里引用

最后一部分:

记住!在同一个数据库中混合表类型是可以的!事实上,它是推荐的并且经常需要。但是,重要的是要注意,如果在加入这两种类型时遇到性能问题,请尝试将一种转换为另一种,看看是否能解决问题。此问题不经常发生,但已报告。

从这里引用

我希望这就足够了:D

于 2013-07-31T07:05:18.887 回答
1

是的,你可以,但除非存在严重的性能瓶颈,否则我只会使用 InnoDB

关于SO的相同问题

MySQL 论坛

于 2013-07-31T06:51:47.107 回答
1

简而言之,是的,您可以根据自己的内心内容进行混合和匹配。

请记住以下几点:

InnoDB 是 ACID 投诉。因此,您需要使用 InnoDB 的任何 ACID 功能。MyISAM 不支持很多东西,例如外键约束。

现在速度很难准确量化。根据执行路径,您可能会获得非常大或非常小的速度差异。

测试并检查这里没有正确或错误的答案。

于 2013-07-31T06:52:27.207 回答