vacuum method

Future<void> vacuum()

Implementation

Future<void> vacuum() async {
  final threshold = txnManager.oldestActiveTxnId;

  // Vacuum in-memory MVCC version chains.
  for (final mvcc in mvccTables.values) {
    mvcc.vacuum(threshold);
  }

  // Physical vacuum of dead tuples in binary page tables.
  for (final pt in pageTables.values) {
    final reclaimed = await pt.vacuum(oldestActiveTxnId: threshold);
    if (reclaimed > 0) {
      print('[Vacuum] ${pt.name}: reclaimed $reclaimed dead tuples.');
    }
  }

  // Evict old committed-txn entries from the in-memory filter.
  committedTxns.evict(threshold);

  print('[NebulaDB] Vacuum done (threshold txnId=$threshold).');
}