基本上,我有一个 lang
表,其中包含 pg VARCHAR(20)
,id VARCHAR(20)
,en ( TEXT)
,ru (TEXT)
用于我的网站的多语言支持,在 99.999% 的情况下,数据将从表中读取而不是写入。我听说 MyISAM 在面向读的表上比 InnoDB 表现更好;考虑到只有 pg
列用作 WHERE
子句,该表应该是 MyISAM 还是 InnoDB?
最佳答案
前言:我不是 DBA。
我认为MyISAM的主要优点是它实际上会在您指定的字段上建立索引,而不是将每个指定的索引索引到强制自动生成的主键id(类似于InnoDB)。这里的一大优点是,如果您想要包含多个字段的索引,例如 (pg, en, ru) 上的单个索引,MyISAM 实际上可以创建该索引,而不是将每个索引索引到 id 并进行三次查找,这是一种较慢的等价物。
就您的情况而言,如果您只想搜索一个字段,那么 MyISAM 可能会带来适度的性能提升,因为它只需要查看该一个字段即可检索您的行。 InnoDB 将从您的字段中获取 id 列表,然后通过 id 检索行。无论如何,这几乎就是它优化的目的。
如果没有明显的优势,我会做任何更干净或更容易的事情。如果您确实想知道答案,您可能需要对其进行基准测试。
再说一次,我不是 DBA,所以也许我在这方面还很遥远!
关于mysql - MyISAM 在几乎只读的表中会更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13388561/