[解決済み] PostgreSQLのテンポラリテーブル
質問
あるクエリを250万回実行する必要があります。このクエリはいくつかの行を生成し、私はそれを
AVG(column)
にしてから、この
AVG
を使って、平均以下のすべての値からテーブルをフィルタリングします。次に必要なのは
INSERT
を使用して、これらのフィルタリングされた結果をテーブルに格納します。
このようなことを合理的な効率で行う唯一の方法は、テーブルを作成することです。
TEMPORARY TABLE
を作成することです。私は、これらの
TEMPORARY TABLE
がハードドライブに(まったく)保存されず、メモリ(RAM)に残ることを望んでいます。
TEMPORARY TABLE がディスク書き込みを発生させるかどうかを知りたいです (これは INSERTS を妨害し、つまりプロセス全体を遅くします)。
どのように解決するのですか?
Postgresでは、一時テーブルのデフォルトの動作は、自動的に削除されず、コミット時にデータが永続化されることに注意してください。以下を参照してください。
ON COMMIT
.
テンポラリーテーブルは、しかし データベースセッションの終了時に削除されます。 :
テンポラリー・テーブルは、セッションの終了時に自動的に削除されます。 オプションで現在のトランザクションの終了時に削除されます。
考慮しなければならないことが複数あります。
-
もし、明示的に
DROP
を使いたい場合は、トランザクションの最後にテンポラリテーブルを作成します。CREATE TEMPORARY TABLE ... ON COMMIT DROP
構文で作成します。 -
コネクションプーリングがある場合
の衝突を避けるために、データベースセッションは複数のクライアントセッションにまたがることがあります。
CREATE
での衝突を避けるために、一時テーブルを削除する必要があります -- プールへの接続を返す前に(例えば、トランザクション内ですべてを行いON COMMIT DROP
の作成構文を使うなどして)。 または を必要に応じて使用することができます (すべてのCREATE TEMPORARY TABLE
文の前に、対応するDROP TABLE IF EXISTS
これは、例えば接続が自動コミットモードで使用されている場合など、トランザクションの外側でも動作するという利点があります)。 -
一時テーブルが使用されている間、ディスクに溢れる前にどれだけの量がメモリに収まるか? を参照してください。
temp_buffers
オプションでpostgresql.conf
-
一時テーブルを頻繁に使用する場合、他に何か心配することはありますか? 一時テーブルをDROPした後は、カタログから死んだタプルを一掃するためにバキュームすることをお勧めします。デフォルトの設定を使用すると、Postgresは自動的に3分ごとにバキュームを行います (
auto_vacuum
).
また、あなたの質問とは関係ありませんが(しかしおそらくあなたのプロジェクトに関連しています)、テンポラリテーブルに対してクエリを実行する必要がある場合、次のことを心に留めておいてください。
の後に
に対してクエリを実行する必要がある場合、適切なインデックスを作成し、そのインデックスに対して
ANALYZE
を発行するのが良いでしょう。
後
に挿入されます。 デフォルトでは、コストベースのオプティマイザーは、新しく作成された一時テーブルの行数が ~1000 行であると仮定します。
関連
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] PostgreSQLでデータベースのコピーを作成する
-
[解決済み】Mac OS XでPostgreSQLサーバーを起動するには?
-
[解決済み] forループの中で<と<=のどちらを使うべきか [閉じた状態].
-
[解決済み] 原子演算コスト
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ファイルキャッシュをクリアしてパフォーマンステストを繰り返す
-
[解決済み] Entity Frameworkのクエリは遅いが、SqlQueryの同じSQLは速い。
-
[解決済み] translateZ(0)に対するCSSのパフォーマンス
-
[解決済み] Rでdata.frameをマージ/ジョインする最速の方法は何ですか?
-
[解決済み] RustのOption型のオーバーヘッドとは?
-
[解決済み] 原子演算コスト
-
[解決済み] Rでループが遅いのはなぜですか?
-
[解決済み] S3での1ディレクトリあたりの最大ファイル数
-
[解決済み] .Net 4.0の新しいTuple型は、なぜ参照型(クラス)であり、値型(構造体)ではないのでしょうか?
-
[解決済み] Googleはどうしてそんなに速いのか?