PostgreSQLの結合について質問があります。PostgreSQLはJOINされたテーブルの一時テーブルを作成しますか、それとも
一時テーブルなしですべてを作成しますか?
私の質問の理由は次のとおりです。多くのJOINを使用してSELECT要求を行うと、書き込み操作でIOスパイクが発生します。この問題の理由は何でしょうか?
どうもありがとう。
PostgreSQLの結合について質問があります。PostgreSQLはJOINされたテーブルの一時テーブルを作成しますか、それとも
一時テーブルなしですべてを作成しますか?
私の質問の理由は次のとおりです。多くのJOINを使用してSELECT要求を行うと、書き込み操作でIOスパイクが発生します。この問題の理由は何でしょうか?
どうもありがとう。
PostgreSQLは、結果セットが十分に大きくなると、一時的にディスクにスピルします。RAMよりも小さいデータベースがない限り、選択肢はあまりありません。
ただし、データページが作成されてから初めて読み取った場合は、予期しない書き込みが発生することもあります。可視性チェックを最適化するために、各ページに「ヒントビット」が設定されています。これらは、掃除機をかけるときなど、またはページにアクセスしたときに設定されます。大規模なインポートに続いてテーブルスキャンを実行すると、すべてのヒントビットが設定されて書き出されるため、予期しないIOが大量に発生する可能性があります。