簡體   English   中英

如何將CopyManager與連接池數據源一起使用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM