[ https://issues.apache.org/jira/browse/DERBY-5473?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kathey Marsden updated DERBY-5473: ---------------------------------- Description: On a table with an BIGINT Index that is updated quickly with every increasing values the index can grow and space not be reclaimed. Attaching a reproduction for this issue ReproIdxGrowth. The program has a single thread that iteratively updates 5 rows in a table with a time value. PreparedStatement ps = conn.prepareStatement( "UPDATE T SET LAST_SYNC_TIME = ?, NUM_SYNCS = ? WHERE ACCOUNT_ID = ?"); ResultSet rs = s.executeQuery("SELECT ACCOUNT_ID, NUM_SYNCS FROM T"); while( rs.next()) { int account = rs.getInt(1); int prevNumSync = rs.getInt(1); ps.setLong(1, new Date().getTime()); ps.setInt(2,prevNumSync++); ps.setInt(3, account); ps.executeUpdate(); } After 50,000 iterations we end up with 150 pages allocated for the just the 5 rows, possibly because it cannot get the table lock to rebalance the tree. was: Attaching a reproduction for this issue ReproIdxGrowth. The program has a single thread that iteratively updates 5 rows in a table with a time value. PreparedStatement ps = conn.prepareStatement( "UPDATE T SET LAST_SYNC_TIME = ?, NUM_SYNCS = ? WHERE ACCOUNT_ID = ?"); ResultSet rs = s.executeQuery("SELECT ACCOUNT_ID, NUM_SYNCS FROM T"); while( rs.next()) { int account = rs.getInt(1); int prevNumSync = rs.getInt(1); ps.setLong(1, new Date().getTime()); ps.setInt(2,prevNumSync++); ps.setInt(3, account); ps.executeUpdate(); } After 50,000 iterations we end up with 150 pages allocated for the just the 5 rows, possibly because it cannot get the table lock to rebalance the tree. Issue & fix info: High Value Fix,Repro attached Bug behavior facts: Seen in production Summary: Index growth can occur with update of ever increasing values (was: Index growth can occur with update of ever increasing values i) > Index growth can occur with update of ever increasing values > ------------------------------------------------------------- > > Key: DERBY-5473 > URL: https://issues.apache.org/jira/browse/DERBY-5473 > Project: Derby > Issue Type: Bug > Components: Store > Reporter: Kathey Marsden > Attachments: ReproIdxGrowth.java > > > On a table with an BIGINT Index that is updated quickly with every > increasing values the index can grow and space not be reclaimed. > Attaching a reproduction for this issue ReproIdxGrowth. > The program has a single thread that iteratively updates 5 rows in a table > with a time value. > PreparedStatement ps = conn.prepareStatement( > "UPDATE T SET LAST_SYNC_TIME = ?, NUM_SYNCS = ? WHERE ACCOUNT_ID = > ?"); > ResultSet rs = s.executeQuery("SELECT ACCOUNT_ID, NUM_SYNCS FROM T"); > while( rs.next()) { > int account = rs.getInt(1); > int prevNumSync = rs.getInt(1); > ps.setLong(1, new Date().getTime()); > ps.setInt(2,prevNumSync++); > ps.setInt(3, account); > ps.executeUpdate(); > } > After 50,000 iterations we end up with 150 pages allocated for the just the 5 > rows, possibly because it cannot get the table lock to rebalance the tree. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira