0

PostgreSQLの結合について質問があります。PostgreSQLはJOINされたテーブルの一時テーブルを作成しますか、それとも
一時テーブルなしですべてを作成しますか?

私の質問の理由は次のとおりです。多くのJOINを使用してSELECT要求を行うと、書き込み操作でIOスパイクが発生します。この問題の理由は何でしょうか?

どうもありがとう。

4

1 に答える 1

1

PostgreSQLは、結果セットが十分に大きくなると、一時的にディスクにスピルします。RAMよりも小さいデータベースがない限り、選択肢はあまりありません。

ただし、データページが作成されてから初めて読み取った場合は、予期しない書き込みが発生することもあります。可視性チェックを最適化するために、各ページに「ヒントビット」が設定されています。これらは、掃除機をかけるときなど、またはページにアクセスしたときに設定されます。大規模なインポートに続いてテーブルスキャンを実行すると、すべてのヒントビットが設定されて書き出されるため、予期しないIOが大量に発生する可能性があります。

于 2013-01-09T12:11:47.927 に答える