Lines Matching full:checkpoint

308 size of a checkpoint to be slightly less than a half the log.
310 Apart from this size requirement, a checkpoint transaction looks no different
313 perspective, the checkpoint transaction is also no different - just a lot
317 Because the checkpoint is just another transaction and all the changes to log
320 minimise the time we hold the CIL locked while writing the checkpoint
324 per-checkpoint context that travels through the log write process through to
325 checkpoint completion.
327 Hence a checkpoint has a context that tracks the state of the current
328 checkpoint from initiation to checkpoint completion. A new context is initiated
329 at the same time a checkpoint transaction is started. That is, when we remove
330 all the current items from the CIL during a checkpoint operation, we move all
331 those changes into the current checkpoint context. We then initialise a new
336 are formatting the checkpoint into the log. It also allows concurrent
340 checkpoint sequence order is maintained during log replay.
342 To ensure that we can be writing an item into a checkpoint transaction at
344 into the new CIL, then checkpoint transaction commit code cannot use log items
349 checkpoint context so that the log item can be released. In diagrammatic form,
370 And after the flush the CIL head is empty, and the checkpoint context log
373 Checkpoint Context
396 start, while the checkpoint flush code works over the log vector chain to
397 commit the checkpoint.
399 Once the checkpoint is written into the log buffers, the checkpoint context is
404 checkpoint context.
415 vectors in one checkpoint transaction. I'd guess this is a "measure and
419 Delayed Logging: Checkpoint Sequencing
437 As discussed in the checkpoint section, delayed logging uses per-checkpoint
439 checkpoint. Because the switching of checkpoint contexts must be done
446 during the commit, we can assign the current checkpoint sequence. This allows
448 checkpoint sequence needs to be committed before they can continue. As a
450 the log forces to a specific checkpoint.
452 To ensure that we can do this, we need to track all the checkpoint contexts
453 that are currently committing to the log. When we flush a checkpoint, the
455 checkpoint commit completes, it is removed from the committing list. Because
456 the checkpoint context records the LSN of the commit record for the checkpoint,
477 and push if required. Indeed, placing the current sequence checkpoint flush in
483 Delayed Logging: Checkpoint Log Space Accounting
486 The big issue for a checkpoint transaction is the log space reservation for the
487 transaction. We don't know how big a checkpoint transaction is going to be
491 still need to reserve the space in the log for the checkpoint.
518 relogged. This allows for a checkpoint reservation to only have to account for
524 large enough to handle arbitrary sized checkpoint transactions. This
525 reservation needs to be made before the checkpoint is started, and we need to
526 be able to reserve the space without sleeping. For a 8MB checkpoint, we need a
532 every checkpoint transaction completion. Unfortunately, if this space is not
552 Hence we can grow the checkpoint transaction reservation dynamically as items
555 checkpoint flush code.
563 checkpoint commit to complete. This background push is checked and executed by
598 insertion into the CIL, unpin on checkpoint completion". In other words, the
599 pinning and unpinning becomes symmetric around a checkpoint context. We have to
602 can be multiple outstanding checkpoint contexts, we can still see elevated pin
603 counts, but as each checkpoint completes the pin count will retain the correct
606 Just to make matters more slightly more complex, this checkpoint level context
631 3. Checkpoint commit ordering
671 The final serialisation point is the checkpoint commit record ordering code
672 that is run as part of the checkpoint commit and log force sequencing. The code
682 events they are waiting for are different. The checkpoint commit record
683 sequencing needs to wait until checkpoint contexts contain a commit LSN
685 sequencing needs to wait until previous checkpoint contexts are removed from
772 attach checkpoint context to log buffer
777 8. Checkpoint completion