2012-08-27 49 views
3

我正在寫一個CUDA代碼,它需要數據庫中的數據 我想從存儲在PostgreSQL中的數據庫中獲得400個隨機行。如果我按順序檢索每一行,它會使我的代碼非常慢,並且不會達到並行和加速的目的。所以,我想要一些可以與PostgreSQL建立多個連接並更快地檢索數據的C庫或函數。PostgreSQL和C的多個連接

C中有哪些東西可以幫助我做到這一點?

+0

你是否已經嘗試過'libpq'(http://www.postgresql.org/docs/9.1/static/libpq.html),打開多個使用'PQconnectStart()'的非阻塞連接? – halex

+0

你是否還試圖運行PostgreSQL作爲[內存數據庫](http://stackoverflow.com/questions/1828895/postgresql-in-memory-database)來檢查性能提升? –

+0

續:我懷疑如果您的數據存儲位於硬盤上,需要物理移動磁頭來讀取每條記錄,您是否可以更快地檢索數據,無論是否支持GPU。因此,爲了能夠以快速模式檢索數據 - 需要將數據存儲在RAM/SSD/VRAM等一些隨機存取設備中。只有下一步纔會嘗試編寫自定義代碼,它們並行地檢索一些數據。但是,這一步可能也必須由PostgreSQL開發者作爲數據庫引擎的一部分來實現。 –

回答

1

也許這樣的查詢會適合你:

SELECT * FROM tablename ORDER BY RANDOM() LIMIT 400; 
+0

不是在數據庫網站上獲得隨機行的非常有效的方式,但是,這也是我的想法。 –