おそらく直感に反して、単純なcount
ワークロードが読み取りに非常に偏っていない限り、アプローチはより高速です。
これは、カウンターテーブルの効果が更新をシリアル化することになるため、特定のfoo
を更新するトランザクションは1つだけであるためです。 いつでも飛行できます。これは、カウンターを更新するトリガーの更新により、そのfoo
がロックされるためです。 のエントリはカウンタテーブルにあり、トランザクションがロールバックまたはコミットされるまで解放されません。
さらに悪いことに、トランザクションが複数のfoo
に影響を与える場合 別のトランザクションも同様です。デッドロックが原因でトランザクションの1つが中止される可能性が高くなります。
変更する正当な理由があるまで、単純なカウントに固執します。