[MDEV-10571] Implement support to handle DDL Statements with Flashback Created: 2016-08-17  Updated: 2019-07-24

Status: Open
Project: MariaDB Server
Component/s: None
Fix Version/s: None

Type: Task Priority: Major
Reporter: Ralf Gebhardt Assignee: Lixun Peng
Resolution: Unresolved Votes: 7
Labels: None

Issue Links:
Blocks
blocks MDEV-10459 Port Time Machine/Flashback Feature t... Open
Relates
relates to MDEV-14745 Documentation mentions that we will b... Closed
Epic Link: Flashback

 Description   

The first implementation of the flashback feature only reverts DML based statements up to a point where a DDL statement was executed.

For the support of DDL changes in the server are needed.

  • For ADD INDEX/COLUMN, or CREATE TABLE query, just drop the index, column, table when running Flashback.
  • For DROP INDEX/COLUMN, or DROP TABLE query, will copy or rename the old table to a reserved database. When Flashback is running, I can drop new table, and rename the saved old table to original database.
  • For TRUNCATE table, I just rename old table to reserved database and create a new empty table.


 Comments   
Comment by Mark Callaghan [ 2016-10-12 ]

RocksDB has persistent snapshots that make this trivial to implement for MyRocks assuming dictionary tables use MyRocks.
http://rocksdb.org/blog/2015/11/10/use-checkpoints-for-efficient-snapshots.html

Comment by Michaël de groot [ 2019-07-24 ]

So enabling this means that 'faster' alter table operations are no longer possible: All ALTER TABLE will be the slow 'copy' algorithm.

Next to that, when running ALTER TABLE on a 100GB table, there will be a 100GB old table left. When is this old table being deleted? Does this happen automatically when the binary logs containing this event are deleted?
If so: Does that mean rotating binary logs can create (series of) complete buffer pool locks (because it is dropping a table)? Rule of thumb is that MariaDB locks for 1 second per 100GB buffer pool. So if there are 100 TRUNCATE tables in the binary log that is being rotated and the buffer pool is 200GB, the outage for rotating log files would be 200 seconds?

Generated at Thu Feb 08 07:43:14 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.