我在带有8GB RAM的服务器上运行了一个约4.5GB的数据库。绝大多数桌子是Myisam(约4.3GB),但我很快 要转换 他们中的一些人到InnoDB。 (这将是一个缓慢的过程,首先关注最密集的表)。

运行两种类型的存储引擎的专用服务器有什么问题吗?

有帮助吗?

解决方案

什么也没有 错误的 只要您了解每个机器的优缺点,在同一台物理机上使用多个存储引擎。所有插件存储类型都有性能注意事项,功能限制和用例。

例如,如果您有90%写的小桌子,则可以选择Myisam。如果数据可以轻松再生并且是一个小表格,例如排队,则可以选择内存。如果您的表格为90%,并且在寻找数据时必须在那里,那么您可能会选择一个支持交易和可配置原子的存储引擎,例如InnoDB。如果您需要通过损坏数据的文件系统可访问性,则可以选择CSV。

但是,您可以在同一模式和物理主机中安全地使用多个存储引擎。

但是,让我注意,您的缓冲区在整个混乱中都起着作用。如果您同时使用Myisam和InnoDB,则需要注意您的KEY_BUFFER和INNODB_BUFFER_POOL不争论。这将对您进行仔细的计划,但这就是我们要做的。

其他提示

我不能告诉你这是否是一种普遍做法。我可以说我自己的经历。

我总是使用最佳的工具,因此我一直在混合引擎。我的大多数项目都使用Myisam作为默认引擎。

当我需要InnoDB上的特殊功能时,我会选择它。

当桌子大部分是仅阅读的时,我可以在眨眼之前选择存档引擎。

知道机器服务器具有足够的内存,我所有的温度数据都存储在堆表上。

过去,我看到了一些放慢速度混合了Myisam和InnoDB,但这不是一个特定的MySQL问题。当您仅使用一台引擎时,这是一个设计问题。实际使用错误的引擎会导致更多的放缓,无论它只是myisam,只是InnoDB还是两者的混合。很难定义一个公式来知道何时会发生放缓。只是实际的测试可以对您说。

当然,您无法在独特的查询中保留InnoDB和Myisam的完整性和一致性。

我试图避免在同一数据库中混合Myisam和InnoDB表,但这是出于理智而不是实际原因。但是,我发现将带有Myisam表的数据库用于FullText搜索很有用,以便我可以在网站上运行。将其保存在每个条目的单独数据库中,可以轻松地让任何在DB上工作的开发人员查看正在发生的事情。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top