2012-03-19 51 views
2

問題在於計算機的寫入速度(10 * 32位機器)和postgresql查詢性能。我將詳細解釋場景。使用Pytables優化HDF5中的寫入速度

我有大約80 GB的數據(以及approprite數據庫索引)。我試圖從Postgresql數據庫中讀取它,並使用Pytables將其寫入HDF5中。我在一個hdf5文件中有1個表和5個變量數組。Hdf5的實現不是多線程的或未啓用對稱多處理。我租用了大約10臺計算機爲了加快我的數據處理速度,我試圖編寫它們。

至於爲PostgreSQL表而言整體記錄的大小爲140萬,我有5個主體 - 外鍵指tables.I我不使用加入,因爲它是不可擴展

所以對於單個查找我做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) 

(同樣五個查詢)

每臺計算機輸出兩種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數據庫的配置:

我現在的機器:8GB RAM與酷睿i7 2代處理器。

我修改了以下到PostgreSQL配置文件: 的shared_buffers:2 GB effective_cache_size:4 GB

目前成效注:

我已運行約10小時和性能如下: 每個文件寫入的記錄總數約爲6,21,000 * 5 = 31,05,000

瓶頸是我每天只能租用它10小時(過夜),如果以這種速度處理,則需要大約11天,這對我的實驗來說太高了。

請告訴我如何改善。 問題: 1.我應該在這些桌面上使用Symmetric多處理(它有2個內核,大約2 GB的RAM)。那麼這種情況下有什麼建議或優先選擇? 2.如果我更改我的postgresql配置文件並增加內存,它會增強我的過程。 3.我應該使用多線程..在這種情況下,任何鏈接或指針將有很大的幫助

感謝 SREE aurovindh V

+0

你正在查詢的東西,迭代結果寫一些東西?在這種情況下,數據庫可能不是瓶頸.. – Jayan 2012-03-19 08:05:29

+0

@jayan嗨,我實際上每次查詢並將結果寫入hdf5格式。你能幫我優化它嗎? – 2012-03-19 10:38:08

回答