0

我一直只在我的所有项目中使用 MyISAM,但在开始下一个项目之前,我正在寻找经验丰富的意见。

我即将开始一个项目,该项目将处理许多表中的数十万行。(随着时间的推移,一些表甚至可能有数百万行)。该项目将主要需要快速读取访问,因为它是一个 Web 应用程序,但快速写入显然没有什么坏处。它需要非常可扩展。

该项目还将处理敏感和重要的信息,这意味着它需要可靠。MySQL 似乎因忽略验证而臭名昭著。

该项目将使用 CakePHP 作为框架,我相当肯定它同样支持 MySQL 和 Postgresql,但如果有人对此有异议,请告诉我。

我很想使用 InnoDB,但我听说它的性能很差。Postgresql 似乎是最可靠的,但也没有 MyISAM 快。

如果我能够将服务器的 MySQL 版本升级到 5.5,那么 InnoDB 会比 Postgres 更安全吗?还是 MyISAM 仍然更适合大多数需求并且比其他产品更具可扩展性?

4

1 回答 1

2

这真正需要的唯一答案是“不是 MyISAM”。如果您关心您的数据,则不会。毕竟,/dev/null具有真正令人惊叹的性能,但它也不符合您的可靠性要求;-)

其余的是通常的 MySQL 与 PostgreSQL 意见,每次有人询问新口味时我们都会关闭,因为它确实不会带来太多有用的东西。

比您的数据库选择更重要的是您如何使用它:

  • 您是否在 Redis 或 Memcached 之类的东西中缓存了可能会有点陈旧的常见命中数据?

  • 您是否避免从低效的 ORM 中选择“n+1”以支持某种理智的连接?

  • 您是否避免选择大量不需要的数据?

  • 您是进行选择性缓存失效(我为此使用LISTENand NOTIFY),还是在某些情况发生变化时刷新整个缓存?

  • 您是否将分页最小化,并且当您必须分页时,是否基于上次看到的 ID 而不是偏移量?SELECT ... FROM ... WHERE id > ? ORDER BY id LIMIT 100可以比 快得多SELECT ... FROM ... ORDER BY id OFFSET ? LIMIT 100

  • 您是否监控查询性能并手动调整问题查询、创建适当的索引等?

(标记为社区 wiki,因为我对这个问题进行了近距离投票,除非它是 CW,否则近距离投票和回答似乎是不合适的)。

于 2013-09-06T01:30:16.347 回答