1
我有一個方法(C++代碼)讀出並從數據庫(Oracle)的寫操作。 但過程需要很長時間才能完成。多線程數據庫讀訪問
我正在考慮在這個進程查詢的表中創建分區。 然後使該方法的多線程,以便每個線程(每個分區)可以讀/並行寫入數據。
我將創建每個線程一個數據庫連接。
請問write
慢下來?
這項工作? 是否有任何其他改進性能的方式(所有查詢都已經過調整和優化)?
感謝, 尼基爾
我有一個方法(C++代碼)讀出並從數據庫(Oracle)的寫操作。 但過程需要很長時間才能完成。多線程數據庫讀訪問
我正在考慮在這個進程查詢的表中創建分區。 然後使該方法的多線程,以便每個線程(每個分區)可以讀/並行寫入數據。
我將創建每個線程一個數據庫連接。
請問write
慢下來?
這項工作? 是否有任何其他改進性能的方式(所有查詢都已經過調整和優化)?
感謝, 尼基爾
如果目前的瓶頸是寫入數據到數據庫,然後創建多個線程寫入更多的數據可能會或可能不會幫助,這取決於數據是如何分區,以及是否將寫操作可能會同時發生,或者它們是否相互干擾(無論是在數據庫鎖定級別還是在數據庫磁盤IO級別)。
假設有足夠的硬件併發性(例如在多核機器上)來處理額外的線程,創建更多的線程將允許應用程序處理更多數據,並將其排隊以寫入數據庫。
分區可能會提高數據庫性能,因爲可能會更改相關表上的索引。如果您可以將單獨的分區放在單獨的物理磁盤上,那麼當只有一個分區需要由給定的SQL語句訪問時,這可以提高IO。
刪除不需要的索引,更改索引列的順序以匹配查詢,甚至更改索引類型也可以提高性能。
與一切:之前和所有建議的更改配置文件後它。
這是不可能的說,不知道當前系統的性能配置。時間到了哪裏?它可能正在等待數據,處理數據,等待寫入事務提交或其他地方。這在很大程度上決定了適當的解 – 2011-02-14 06:18:39