Bug #74919 | purge should remove intermediate rows between far snapshots | ||
---|---|---|---|
Submitted: | 18 Nov 2014 18:15 | Modified: | 25 Jun 2015 2:53 |
Reporter: | Domas Mituzas | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | all | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[18 Nov 2014 18:15]
Domas Mituzas
[19 Nov 2014 19:36]
Hartmut Holzgraefe
ActiveMQ by default uses an 'interesting' approach to make sure that only a single active instance exists: * BEGIN TRANSACTION; * SELECT ...some_row... FOR UPDATE; -- this will block if another instance -- already exists and will eventually -- get a lock timeout, after which a new -- transaction will try to lock it again -- ... and again ... * UPDATE ...some_row...; -- then sleep a bit, and repeat ... and repeat ... With MySQL Cluster this will eventually run into bug #56929 after updating the same row ~32000 times within the same transaction, and bug #65037 as ndbd data nodes won't restart unless all ongoing transactions have terminated ... With InnoDB the effects are not as severe, but bad enough, so a more intelligent visibility detection algorithm than just "newer than the oldest still active transaction" that can discard intermediate rows not visible to any transaction anymore would be of great help in this "neverending transaction" use case, too ... (IMHO ActiveMQ should find a more clever way of coordinating different instances, but that's a different story)