gpt4 book ai didi

sql - MySQL - FK 在 Web 应用程序中有用/可行吗?

转载 作者:可可西里 更新时间:2023-11-01 07:45:45 24 4
gpt4 key购买 nike

我遇到过与 FK 和 Web 应用程序相关的讨论。基本上有人说 Web 应用程序中的 FK 并不代表真正的改进,在某些情况下甚至会使应用程序变慢。

你们怎么看,你们的经验是什么?

编辑:请注意,我知道 FK 的工作和目标,我只是不确定它们是否会对 web 应用程序(如 youtube 或类似的东西)的性能产生重大负面影响.

--

InnoDB 引擎的创造者、Innobase 的创始人兼首席执行官 Heikki Tuuri 的话:

InnoDB checks foreign keys as soon as a row is updated, no batching is performed or checks delayed till transaction commit Foreign keys are often serious performance overhead, but help maintain data consistency

Foreign Keys increase amount of row level locking done and can make it spread to a lot of tables besides the ones directly updated

最佳答案

Foreign keys将保证表 order_details 中的行具有引用 orders 表的字段 order_id 永远不会有 order_id orders 表中不存在的值。

外键不是拥有工作关系数据库所必需的,但它们绝对是避免关系破裂和孤立行的必要条件(即 referential integrity )。 ACID 中的C 需要在数据库级别实现参照完整性的能力。站起来。

至于您对性能的担忧,一般来说,性能影响(如果有的话)可以忽略不计。我建议放入所有外键约束,只有在遇到无法通过其他方式解决的实际性能问题时,才在没有外键约束的情况下进行试验。

此外,作为旁注,虽然与 MySQL 没有直接关系,但引用自 Microsoft Patterns and Practices: Chapter 14 Improving SQL Server Performance :

When primary and foreign keys are defined as constraints in the database schema, the server can use that information to create optimal execution plans.

关于sql - MySQL - FK 在 Web 应用程序中有用/可行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2957174/

24 4 0