【发布时间】:2013-09-06 01:18:28
【问题描述】:
我的所有项目都一直使用 MyISAM,但在开始下一个项目之前,我正在寻找经验丰富的意见。
我即将开始一个项目,该项目将处理许多表中的数十万行。 (随着时间的推移,一些表甚至可能有数百万行)。该项目主要需要快速读取访问权限,因为它是一个 Web 应用程序,但快速写入显然没有什么坏处。它需要非常可扩展。
该项目还将处理敏感和重要的信息,这意味着它需要可靠。 MySQL 似乎因忽略验证而臭名昭著。
该项目将使用 CakePHP 作为框架,我很确定它同样支持 MySQL 和 Postgresql,但如果有人对此有异议,请告诉我。
我很想使用 InnoDB,但我听说它的性能很差。 Postgresql 似乎是最可靠的,但也没有 MyISAM 快。
如果我能够将服务器的 MySQL 版本升级到 5.5,那么 InnoDB 会比 Postgres 更安全吗?或者 MyISAM 是否仍然更适合大多数需求并且比其他更可扩展?
【问题讨论】:
-
这个问题不适合在这里,因为答案将基于意见。我会说,虽然 MyISAM 在某些情况下可以更快,但缺乏外键约束和事务是相当有限的。
-
我意识到这可能是主观的,但也有一些事实导致了这些观点。外键约束是什么意思?
-
对不起,我应该澄清这个问题。 CakePHP 具有关联的模型并相应地创建 SQL 查询。如果表本身知道它们的关系,会有所不同吗?或者这真的会影响性能吗?
-
@LukeSapan 阅读postgresql.org/docs/current/static/ddl-constraints.html。 FK 约束可防止在记录之间创建悬空关系,并且应该始终使用,除非您有充分的理由不这样做。如果 CakePHP 不将它们创建为 DDL 生成的一部分,我会寻找另一个框架。
标签: mysql database performance postgresql innodb