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

PostgreSQLはステートメントとデータをどのようにキャッシュしますか?

    通常、テーブルファイルとインデックスファイルの内容のみが共有バッファスペースにキャッシュされます。

    クエリプランは、状況によってはキャッシュされます。これを確実にする最善の方法は、クエリを1回準備してから、毎回実行することです。

    クエリの結果は自動的にキャッシュされません。同じクエリを再実行すると(文字と文字が同一で、DBで更新が実行されていない場合でも)、プラン全体が実行されます。もちろん、共有バッファキャッシュにすでに存在するテーブル/インデックスデータを利用します。したがって、必ずしもディスクからすべてのデータを再度読み取る必要はありません。

    プランキャッシュの更新

    プランのキャッシュは通常、セッションごとに実行されます。これは、プランを作成する接続のみがキャッシュされたバージョンを使用できることを意味します。他の接続は、独自のキャッシュバージョンを作成して使用する必要があります。プランを再利用することで得られる節約は、とにかく接続するコストと比較して、ほとんどの場合ごくわずかであるため、これは実際にはパフォーマンスの問題ではありません。 (クエリが本当にでない限り 複雑です。)

    します PREPAREを使用する場合はキャッシュ: http://www.postgresql.org /docs/current/static/sql-prepare.html

    します クエリがPL/plSQL関数にある場合のキャッシュ: http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING

    しません psqlに入力されたアドホッククエリをキャッシュします。

    うまくいけば、他の誰かがクエリプランキャッシングの他のケースについて詳しく説明することができます。




    1. PHPのstrip_tagsに相当するMySQLクエリとは何ですか?

    2. C#から.sqlを実行するにはどうすればよいですか?

    3. Sqlite3-csvからNULL値をインポートする方法

    4. Microsoft SQL(.MDF)ファイルからMySQLにデータをインポートします