質問

私は現在、より大きなwikipedia-ダンプ由来のPostgreSQLデータベース;で約40GBのデータです。データベースにしないようにするには、HP Proliant ML370G5サーバSuse Linux Enterprise Server10;私タからpc上のプライベートネットワーク管理の簡易D-リンクを設定します。私静DHCP(民間)IPs両方のノートパソコンやサーバーです。

とにかく、私のノートパソコンを使用pgAdmin IIIを送りたいのあSQLコマンド/問合せ;このうちのいくつかのインデックスの作成、DROP INDEX-削除を選択。ことがあったりして送信コマンドのようにインデックスの作成)で返聞かせていただきましては、クエリを実行した完璧など。しかし、郵過程に割り当てるようなコマンドでは依然として寝たり、サーバーにコピーします。今ません本当にこの、ってことPostgreSQLを維持してプールのpostmasters準備を処理します。しかし、この過程で食べ6GBので9.4GB付RAM、私の心配がないにしてあげます。※現在もこのキャッシュのデータは[共有]メモリの場合は別のクエリが起を利用する必要が同じデータがわからないのです。

もうひとつは気ました。

していま2す。ひとつは、 ページ テーブルの指標としているその page_id カラムです。その pagelinks テーブルの pl_from カラムを参照のどちらも"や"変数"を ページです。page_id 欄とは異なり、 page_id カラムの pl_from 無指数(ます。を知ることができるため、規模のテーブルは必要だが、解決 ページ テーブルは、前連結会計年度末比134百万円の行後から削除してしまった場合の方がいらない)、 pagelinks テーブルが293百万円です。

いる必要は以下のコマンドを実行することの pagelinks テーブルの無駄な行

DELETE FROM pagelinks USING page WHERE pl_from NOT IN (page_id);

なので基本的には、いくと、 pagelinks テーブルのすべてのリンクからページの ページ 表に示す。後も無効にして、入れ子ループおよび/または連続スキャンのクエリ-オプティマイザは常に与えてくれるのは以下の"ソリューション":

Nested Loop  (cost=494640.60..112115531252189.59 rows=3953377028232000 width=6)
  Join Filter: ("outer".pl_from <> "inner".page_id)"
  ->  Seq Scan on pagelinks  (cost=0.00..5889791.00 rows=293392800 width=17)
  ->  Materialize  (cost=494640.60..708341.51 rows=13474691 width=11)
        ->  Seq Scan on page  (cost=0.00..402211.91 rows=13474691 width=11)

する機能があるように思われるタスクだより週間のお時間を完了明らかに、これを放置するわけにはいきません。そのためのいくもの page_id indexい、そういうことですよね...でも頑固なプティマイザは、私が間違っています。

役に立ちましたか?

解決 2

実際、私は、一時テーブルを高速にクエリの実行:

CREATE TABLE temp_to_delete AS(
    (SELECT DISTINCT pl_from FROM pagelinks) 
        EXCEPT 
    (SELECT page_id FROM page));
DELETE FROM pagelinks USING temp_to_delete 
    WHERE pagelinks.pl_from IN (temp_to_delete.pl_from);

驚くべきことに、このクエリに完成約4時間が最初のクエリが発表したのは約14h前に私.nekoです。具体的には、削除に返される:

Query returned successfully: 31340904 rows affected, 4415166 ms execution time.

としての最初の私の質問は、この過程に届き誠一情報をキャッシュ;他のクエリを必要情報のキャッシュメモリ(RAM)のキャッシュを空にしておきます。のpostmastersは実際にはプールのプロセス.

でも起こってくるということになる gnome-system-monitor は神話のためにも不完全な情報は役に立た報値です。で予測を算出するのに使用したのではないかともいわれていな混乱して最近;例えば、とは考えておりませんのメモリ使用量が他のユーザーのようにpostgresユーザ!) もう見られないというのは、たいへんおいて12GB RAMがこの問題無し。そのため、試ルシステムのモニターなんかではpostgreSQLを利用することを目的とするよう xosview 誠に有効なツールです。

武器agiは、dexで下がらないboxerぐ!

他のヒント

また;きの作成を行う新しいテーブルの記録に必要な、このように作成されたテーブルとして書場合、新しいテーブルが十分に小さいので、もし高速化がない場合があったので、それを助けます。

お届プションがとれない可能性がありましては、接続クライアントには、オープン。はpgadminの。わかりません。

メモリ使用できるshared_buffers(チェックインは設定の設定)です。

現在のモードです。大きなメンテナンス業務、このような、自由におこなってくださいwork_memも大きな数GBにサンプルがあります。いまで多くのRAMになります。

設定work_memを4GB';説明から削除すpagelinksがpl_fromないものを選択page_idからページ);

べきである配列番号スキャンのページでは、ハッシュでは、seq scan pagelinks,覗いてみたら、ハッシュをチェックpage_ids.で非常に高速よりもかなり早く、4時間!) が多いwork_memのハッシュ.

で削除する重要な部分のテーブルでよいようになります:

このように作成されたテーブルをpagelinks2として選択す* からpagelinks JOINのページb a.pl_from=b.page_id;

(を使用できる簡単な入の代わりに)

またの追加によりこのクエリは、新しいテーブルもご注文いただけディスクのための最適なアクセスす。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top