FKs add read locks to referenced rows. It limits concurrency and it is observable. FKs constrain your ability to incrementally widen 32-bit FKs once you go over 2 billion rows, if you start out with 32-bit PKs. Two concrete reasons to avoid FKs in production, or at least disable them for longer running transactions.
I think this perspective is something you only get once you've run bigger databases in production.
I think this perspective is something you only get once you've run bigger databases in production.