Hi,  Rob

>Is this true for large numbers of lines in you csv?  Originally you said 
>something like 'adding 1000 lines' broke your app. Are you using 
>CopyManager?
Thank you for your reply. I didn't use CopyManager.
②'s query statement query the data inserted by ①, and a large amount of data 
inserted will cause performance problem.
I misunderstood, it's not ① that affects ②, it should be that ②'s query 
statement has a performance problem. 
The Encrypt function is used in ②'s query statement to encrypt the query 
result, and improper use of this function leads to poor performance. 
Sometimes 2~4 seconds to return the result, sometimes 7~19 seconds to return 
the result. 
We optimized the query statement to reduce the query time to less than 1 second 
and now the application works well.

















At 2022-11-16 14:57:41, "Laurenz Albe" <laurenz.a...@cybertec.at> wrote:
>On Wed, 2022-11-16 at 13:04 +0800, gzh wrote:
>> I have developed an application using the jdbc driver and 
>> connecting to a postgresql database .
>> The application mainly does the following two things:
>> ① read data from the CSV file and insert it into the database
>> ② perform a database query
>> In my application, the above ① and ② are executed asynchronously.
>> Everything was working fine until I increase the amount of CSV data to more 
>> than 1000.
>> Randomly they receive an error, the stack trace of which is below.
>>  
>> Caused by: java.net.SocketTimeoutException: Read timed out
>>      at java.base/java.net.SocketInputStream.socketRead0(Native Method)
>>      at 
>> java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
>>      at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
>>      at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
>>      at 
>> java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478)
>>      at 
>> java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
>>      at 
>> java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70)
>>      at 
>> java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1454)
>>      at 
>> java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1065)
>>      at 
>> org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:161)
>
>Well, set a longer socket timeout if you need to run long SQL statements, or 
>tune
>those statements to be faster.
>
>https://jdbc.postgresql.org/documentation/use/#connection-parameters has more
>information about "socketTimeout".
>
>Yours,
>Laurenz Albe

Reply via email to