Can I see how many times a Java ResultSet is asking for data from the database? I have a big table (1 million records) and I want to see how many blocks of data it's pulling from the database. My database is Oracle.
CodePudding user response:
The "Result Set" documentation states:
Fetch Size
By default, when Oracle JDBC runs a query, it retrieves a result set of 10 rows at a time from the database cursor. This is the default Oracle row fetch size value. You can change the number of rows retrieved with each trip to the database cursor by changing the row fetch size value.
Standard JDBC also enables you to specify the number of rows fetched with each database round-trip for a query, and this number is referred to as the fetch size. In Oracle JDBC, the row-prefetch value is used as the default fetch size in a statement object. Setting the fetch size overrides the row-prefetch setting and affects subsequent queries run through that statement object.
Fetch size is also used in a result set. When the statement object run a query, the fetch size of the statement object is passed to the result set object produced by the query. However, you can also set the fetch size in the result set object to override the statement fetch size that was passed to it.
Note:
Changes made to the fetch size of a statement object after a result set is produced will have no affect on that result set.
The result set fetch size, either set explicitly, or by default equal to the statement fetch size that was passed to it, determines the number of rows that are retrieved in any subsequent trips to the database for that result set. This includes any trips that are still required to complete the original query, as well as any refetching of data into the result set. Data can be refetched, either explicitly or implicitly, to update a scroll-sensitive or scroll-insensitive/updatable result set.
Setting the Fetch Size
The following methods are available in all
Statement
,PreparedStatement
,CallableStatement
, andResultSet
objects for setting and getting the fetch size:void setFetchSize(int rows) throws SQLException int getFetchSize() throws SQLException
To set the fetch size for a query, call
setFetchSize
on the statement object prior to running the query. If you set the fetch size toN
, thenN
rows are fetched with each trip to the database.After you have run the query, you can call
setFetchSize
on the result set object to override the statement object fetch size that was passed to it. This will affect any subsequent trips to the database to get more rows for the original query, as well as affecting any later refetching of rows.
If you want to know the number of trips to the database then call getFetchSize()
on the statement and then divide the total number of rows in the result set by the fetch size (and round up).