mysql - MyISAM 在几乎只读的表中会更好吗?

标签 mysql innodb myisam

基本上,我有一个 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/

相关文章:

mysql - 没有适当索引的长时间运行的查询

mysql - 将错误消息列值与查询中使用的列名称进行匹配

PHP PDO更新错误: number of bound variables does not match number of tokens

mysql - 在数据库中找不到空值

mysql - 在mysql中创建innodb数据库

php - 表中的 SUM 点

mysql - MySQL 中 ib_buffer_pool 文件的语义

mysql - 我可以在一个数据库中使用 InnoDB 和 MyISAM 表吗?

大型/巨大表上的 MySQL 数据库性能选择

MySQL:MyISAM 有表空间吗?