我在具有8GB RAM的服务器上运行着大约4.5GB的单个数据库。绝大多数表是MyIsam(约4.3GB),但是我很快将要把其中一些表转换为InnoDB。(这将是一个缓慢的过程,首先要关注最需要写入的表)。
在同时存在两种类型的存储引擎的情况下运行专用服务器有什么问题吗?
我在具有8GB RAM的服务器上运行着大约4.5GB的单个数据库。绝大多数表是MyIsam(约4.3GB),但是我很快将要把其中一些表转换为InnoDB。(这将是一个缓慢的过程,首先要关注最需要写入的表)。
在同时存在两种类型的存储引擎的情况下运行专用服务器有什么问题吗?
Answers:
只要您了解每个物理引擎的优缺点,在同一台物理计算机上使用多个存储引擎就 没有错。所有插件存储类型都有性能方面的考虑,功能限制和用例。
例如,如果您有一个写入率为90%的小表,则可以选择MyISAM。如果可以轻松地重新生成数据并且它是一个小表,例如要排队,则可以选择“内存”。如果您有一个90%可读取的表,并且在查找时必须有数据,那么您可能会选择一个支持事务和可配置原子性的存储引擎,例如InnoDB。如果要通过不损坏数据的文件系统进行访问,则可以选择CSV。
但是,您可以在同一架构以及物理主机中安全地使用多个存储引擎。
不过,请注意,缓冲区在整个混乱中发挥了作用。如果同时使用MyISAM和InnoDB,则需要注意不要竞争key_buffer和innodb_buffer_pool。您将需要仔细计划,但这就是我们要做的。
我不能告诉你这是否是常见的做法。我可以说说自己的经历。
我一直使用最好的工具来完成工作,因此我一直都在混合引擎。我的大多数项目都使用MyISAM作为默认引擎。
当我需要InnoDB上可用的特殊功能时,我会推荐它。
当一个表大部分是只读的时,我会在眨眼之前选择存档引擎。
知道机器服务器有足够的内存,我所有的临时数据都存储在堆表中。
我在过去看到一些混合MyISAM和InnoDB的速度下降,但这不是特定的MySQL问题。当您仅使用一个引擎时,就不会出现设计问题。实际上,使用错误的引擎会导致速度变慢,这仅仅是MyISAM,InnoDB还是两者的混合。很难定义一个公式来知道何时减速。只是实际测试可以告诉您。
当然,您无法在唯一查询中混合使用InnoDB和MyISAM来保持完整性和一致性。
我试图避免在同一数据库中混合使用MyISAM和InnoDB表,但这是出于理智而非出于实际原因。但是,我发现使用带有MyISAM表的数据库进行全文搜索很有用,这样我就可以在网站上运行它。将其保存在一个单独的数据库中,每个条目都带有外键,这使得从事该数据库工作的任何其他开发人员都可以轻松地查看发生了什么。
Is there anything wrong with running a dedicated server where both types of storage engines exist?
也许改写为Multiple types
?