2012-03-19 18 views
2

問題は、コンピュータの書き込み速度(10 * 32ビットマシン)とpostgresqlクエリのパフォーマンスです。このシナリオについて詳しく説明します。Pytablesを使用したHDF5での書き込み速度の最適化

私は約80Gbのデータを持っています(Appropriteデータベースのインデックスと合わせて)。私はPostgresqlデータベースから読み込み、Pytablesを使ってHDF5に書き込もうとしています.1つのテーブルと5つの可変配列が1つのhdf5ファイルにあります.Hdf5の実装はマルチスレッドではなく、対称的なマルチプロセッシングが可能です。私のデータ処理を高速化するために、それらをinorderで書くことを試みています。 PostgreSQLのテーブルに関しては、全体のレコードサイズ140百万円であり、私はtables.Iを参照する5 1次側の外部キーを持つ単一のルックアップ私のためにだから、スケーラブルではないとして参加し

を使用していないためとして

ジョインなしで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の第二世代のプロセッサーと8GBのRAM。

私は、PostgreSQLの設定ファイルに次のように変更作られた:私はおよそ10時間とのためにそれを実行した

: のshared_buffers:2ギガバイト effective_cache_size:現在のパフォーマンス上の4ギガバイト

は注意をパフォーマンスは次のとおりです。 各ファイルに書き込まれたレコードの総数は、約です。6,21,000 * 5 = 31,05,000

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

改善の方法を教えてください。 質問: 1.これらのデスクトップでSymmetricマルチプロセッシングを使用する必要があります(2つのコアに約2GBのRAMがあります)。その場合、推奨されているか、または優先されていますか? 2. postgresql設定ファイルを変更してRAMを増やすと、プロセスが強化されます。 3.マルチスレッドを使うべきですか?その場合、任意のリンクやポインタが大きな助けに

おかげ SREE aurovindhのV

+0

あなたは何かをクエリして何かを書くために結果を反復していますか?その場合、データベースはボトルネックではないかもしれません。 – Jayan

+0

@jayanこんにちは、私は実際に毎回質問し、結果をhdf5形式に書き出しています。それを最適化するのを助けてください。 –

答えて

0

だろう。これは、クエリの効率を理解するのに役立つかもしれない次のリンクに

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

を参照してください。

ありがとうございました

+0

リンクに記載されていることを要約するのに気をつけますか? –

+0

リンクが切れています。今使っている解決策を要約できますか?ありがとう – schoetbi

関連する問題