[
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