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
Post a Comment