2

問題は、コンピューター(10 * 32ビットマシン)の書き込み速度とpostgresqlクエリのパフォーマンスにあります。シナリオについて詳しく説明します。

私は約80Gbのデータを持っています(適切なデータベースインデックスが用意されています)。Postgresqlデータベースから読み取り、Pytablesを使用してHDF5に書き込もうとしています.1つのhdf5ファイルに1つのテーブルと5つの変数配列があります.Hdf5の実装はマルチスレッド化されておらず、対称型マルチプロセッシングが有効になっていません.約10台のコンピューターをレンタルしました私のデータ処理をスピードアップするために1日そしてそれらを書き込もうとしています。

postgresqlテーブルに関しては、全体のレコードサイズは1億4000万であり、5つの主外部キー参照テーブルがあります。スケーラブルではないため、結合を使用していません。

したがって、単一のルックアップの場合、結合なしで6つのルックアップを実行し、hdf5形式で書き込みます。ルックアップごとに、テーブルとそれに対応する配列のそれぞれに6つの挿入を行います。

クエリは本当に簡単です

select * from x.train where tr_id=1 (primary key & indexed)
select q_t from x.qt where q_id=2 (non-primary key but indexed) 

(同様に5つのクエリ)

各コンピューターは2つのhdf5ファイルを書き込むため、合計数は約20ファイルになります。

いくつかの計算と統計:

Total number of records : 14,37,00,000
Total number of records per file : 143700000/20 =71,85,000 
The total number of records in each file : 71,85,000 * 5 = 3,59,25,000

現在のPostgresqlデータベース構成:

私の現在のマシン:i7第2世代プロセッサーを搭載した8GBRAM。

postgresql構成ファイルに次の変更を加えました:shared_buffers:2 GBeffective_cache_size:4 GB

現在のパフォーマンスに関する注意:

10時間実行しましたが、パフォーマンスは次のとおりです。各ファイルに書き込まれるレコードの総数は約6,21,000 * 5=31,05,000です。

ボトルネックは、1日10時間(一晩)しかレンタルできないことです。この速度で処理する場合、約11日かかりますが、これは私の実験には高すぎます。

改善方法を教えてください。質問:1。これらのデスクトップで対称型マルチプロセッシングを使用する必要があります(2つのコアと約2 GBのRAMがあります)。その場合、何が提案または推奨されますか?2. postgresql構成ファイルを変更してRAMを増やすと、プロセスが強化されます。3.マルチスレッドを使用する必要があります。その場合、リンクやポインタは非常に役立ちます。

ありがとうSreeaurovindhV

4

1 に答える 1

0

以下のリンクを参照してください

http://sourceforge.net/mailarchive/forum.php?thread_name=CAC4BLaLCMuA6%3DDated_MsPKp5-F_EyKbrUkMWS4g_D7grwpVXQ%40mail.gmail.com&forum_name=pytables-users

これは、クエリの効率を理解するのに役立つ場合があります。

ありがとう

于 2012-03-19T18:16:07.673 に答える