[英]How to use CopyManager with connection pooled DataSource?
我正在嘗試將postgres
CopyManager.copyIn()
用於批處理插入。 我的數據源是一個c3p0 ComboPooledDataSource
。
sql語句具有以下批處理功能:
dataSource.getConnection().getCopyAPI().copyIn(sql, items); //pseudocode
現在,為了進一步提高數據庫插入速度(預處理后要導入數百GB),我正在嘗試在異步線程中發送copyIn
命令。
但是,如果數據庫位於單個磁盤文件系統上,這有意義嗎? 這樣會提高性能嗎?
以及如何實際驗證copyIn是否正在並行使用連接池?
我嘗試了VisualVM
MBeans
屏幕,在這里我可以看到一個PooledDataSource
條目。 但是,我怎么知道該池已被使用並且項目已並行發送到數據庫?
但是,如果數據庫位於單個磁盤文件系統上,這有意義嗎? 這樣會提高性能嗎?
如果它正在生銹,可能不會,並且在大量並發中肯定沒有什么好處。 對於固態硬盤,有時會產生很大的改進。 在很大程度上取決於驅動器。
我嘗試了VisualVM MBeans屏幕,在這里我可以看到一個PooledDataSource條目。 但是,我怎么知道該池已被使用並且項目已並行發送到數據庫?
查看數據庫中的pg_stat_activity
,看看應用程序中是否有多個並發的COPY
命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.