22

リファレンス ドキュメントによると、READ ONLY トランザクション フラグは、DEFERRABLE トランザクションを許可する以外に役立ちますか?

SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY;

DEFERRABLE トランザクション プロパティは、トランザクションが SERIALIZABLE かつ READ ONLY でない限り効果がありません。トランザクションに対してこれら 3 つのプロパティすべてが選択されている場合、最初にスナップショットを取得するときにトランザクションがブロックされる可能性があります。その後は、SERIALIZABLE トランザクションの通常のオーバーヘッドがなく、シリアライゼーションに寄与したりキャンセルされたりするリスクなしに実行できます。失敗。このモードは、長時間実行されるレポートまたはバックアップに適しています。

データベース エンジンは、読み取り専用トランザクションに対して他の最適化を実行しますか?

4

2 に答える 2

12

質問のコメントで Nick Barnes と Craig Ringer からのコメントを要約するには:

  1. READ_ONLY フラグは必ずしも最適化を提供するとは限りません
  2. READ_ONLY フラグを設定する主な利点は、タプルが変更されないようにすることです。
于 2017-01-06T19:43:52.170 に答える