sql server - How to improve the select query performance in Java ? Is there a way to do select query using multi threading? -


i'm need select query queue have created in data base , view has 30,00,000 rows , taking 2 minutes read data , storing in local memory using jtds jdbc driver . order in read data not matter . right i'm using prepared statement , reading result set . there better way read data base ? i'm reading ms sql server . way i'm reading right is

public resultset getdata(string view_name) throws sqlexception {      string sql="select * "+view_name;      preparedstatement stmt=conn.preparestatement(sql);      resultset= stmt.executequery();      resultset.setfetchsize(8000);      return resultset; } 

as know performance of application degrade size of available memory starts decreasing return in more frequent gc cycles.

is there better way read data base ?

did try streaming of resultset , use of adaptive buffering? what adaptive response buffering , why should use it?

adaptive buffering designed retrieve kind of large-value data without overhead of server cursors. application can execute select statement produces more rows application can store in memory. adaptive buffering provides ability forward-only read-only pass of arbitrarily large result set without requiring server cursor.

when large values read once using get<type>stream methods, , resultset columns , callablestatement out parameters accessed in order returned sql server, adaptive buffering minimizes application memory usage when processing results.

you can have @ msdn library post more info on using adaptive buffering.

not sure ms sql, in mysql streaming of resultset can enable below.

stmt = conn.createstatement(java.sql.resultset.type_forward_only,                     java.sql.resultset.concur_read_only); stmt.setfetchsize(integer.min_value); 

hope helps you.


Comments