sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL:count()またはカウンターを保持しますか?

    おそらく直感に反して、単純なcount ワークロードが読み取りに非常に偏っていない限り、アプローチはより高速です。

    これは、カウンターテーブルの効果が更新をシリアル化することになるため、特定のfooを更新するトランザクションは1つだけであるためです。 いつでも飛行できます。これは、カウンターを更新するトリガーの更新により、そのfooがロックされるためです。 のエントリはカウンタテーブルにあり、トランザクションがロールバックまたはコミットされるまで解放されません。

    さらに悪いことに、トランザクションが複数のfooに影響を与える場合 別のトランザクションも同様です。デッドロックが原因でトランザクションの1つが中止される可能性が高くなります。

    変更する正当な理由があるまで、単純なカウントに固執します。



    1. MySQLユーザーごとにグループ化されたトップラップタイムを選択

    2. SQLの順序:プロのようにデータを並べ替える5つの推奨事項と禁止事項

    3. PostgreSQLグループ化エラー

    4. postgresで行を削除してもシリアルpkがデクリメントされないのはいつですか?