我不确定这个问题的答案是对还是错,因为我认为这在很大程度上取决于情况,但为了心理锻炼,我还是继续问吧:
我的数据库中有一个 MyISAM 表,它位于我的站点的中心。围绕它创建了许多参考表,还有许多其他表直接链接到该表中的行 ID。该表大约有 260k 行,有 28 个字段,其中大部分是 varchars 和 ints。我有大约 15 个索引(数据大约 70 MiB,索引大约 80 MiB)。每天可能有数百次写入,而读取数以万计。我的数据库位于 SSD 驱动器上。
现在我的问题是;将此表更改为 InnoDB 表是否有益?我正在努力扩展我的系统以包括 API 流量,这意味着该表甚至会被查询更多,我想确保一切运行尽可能顺利。因此,我有点倾向于将其转换为 InnoDB。但是,由于该表需要许多索引,我认为 MyISAM 可能会更有效地工作。谁能帮我下定决心?提前致谢1
我很久以前就添加了索引,并且我对 PHP 代码库进行了一些更改,因此可能有些索引已经过时,但总体而言;是的,它们都被使用了。我在表上运行了许多不同类型的查询。不同的查询,不同的索引。但是我在这里的主要问题不涉及表读取性能,而是它如何处理许多索引。InnoDB 索引与数据一起“离开”/存储,而不是 MyISAM 的密钥文件原则。我只是担心这可能会导致足够的性能下降不会超过表锁定问题。