Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-12559

Reconciliation timestamp puzzle

    • Type: Icon: Task Task
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Reconciliation
    • Storage Engines
    • 5
    • StorEng - Defined Pipeline

      I've been analyzing a customer workload and there is a puzzle in the information I can't understand. Opening this ticket to capture the puzzle and hopefully decode it.

      There is a table that has the following set of updating cursor operations:

      "cursor" : {
                    "insert calls" : 170103909,
                    "modify" : 0,
                    "remove calls" : 188969693,
                    "reserve calls" : 0,
                    "truncate calls" : 0,
                    "update calls" : 0, 
      }
      
      "reconciliation" : {
               "approximate byte size of timestamps in pages written" : 10124139424,
               "approximate byte size of transaction IDs in pages written" : 5062069712,
               "page reconciliation calls" : 19577238,
                "page reconciliation calls for eviction" : 18894625,
                "pages deleted" : 102533,
                "pages written including an aggregated newest start durable timestamp " : 693836,
                "pages written including an aggregated newest stop durable timestamp " : 2034996,
                "pages written including an aggregated newest stop timestamp " : 19821,
                "pages written including an aggregated newest stop transaction ID" : 19821,
                "pages written including an aggregated newest transaction ID " : 2595578,
                "pages written including an aggregated oldest start timestamp " : 319780,
                "pages written including an aggregated prepare" : 0,
                "pages written including at least one prepare" : 0,
                "pages written including at least one start durable timestamp" : 5552041,
                "pages written including at least one start timestamp" : 5552041,
                "pages written including at least one start transaction ID" : 5552041,
                "pages written including at least one stop durable timestamp" : 12629383,
                "pages written including at least one stop timestamp" : 12629383,
                "pages written including at least one stop transaction ID" : 12629383,
                "records written including a prepare" : 0,
                "records written including a start durable timestamp" : 130693718,
                "records written including a start timestamp" : 130693718,
                "records written including a start transaction ID" : 130693718,
                "records written including a stop durable timestamp" : 502064996,
                "records written including a stop timestamp" : 502064996,
                 "records written including a stop transaction ID" : 502064996
                              },
      

      There are a few interesting things here, that I'd like to understand better:

      • Why are records written including a start timestamp and records written including a start transaction ID identical? I would expect in this MongoDB workload for timestamps to remain valid longer than transaction IDs.
      • Why is records written including a stop timestamp so much higher than records written including a start timestamp when the workload has a broadly similar number of insert and remove calls.
      • How is records written including a stop timestamp so much higher than "remove calls" when both truncate and reserve are 0

            Assignee:
            backlog-server-storage-engines [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            alexander.gorrod@mongodb.com Alexander Gorrod
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated: