<div id="docs-body">
 <div class="section">
  <div class="titlepage">
   <div>
    <div>
     <h4 class="title">
      <a name="mysql-cluster-ndbinfo-tc-time-track-stats">
      </a>
      25.6.17.61 The ndbinfo tc_time_track_stats Table
     </h4>
    </div>
   </div>
  </div>
  <a class="indexterm" name="idm46045087627024">
  </a>
  <p>
   The
   <code class="literal">
    tc_time_track_stats
   </code>
   table provides
        time-tracking information obtained from the
   <a class="ulink" href="/doc/ndb-internals/en/ndb-internals-kernel-blocks-dbtc.html" target="_top">
    <code class="literal">
     DBTC
    </code>
   </a>
   block (TC) instances in
        the data nodes, through API nodes access
   <code class="literal">
    NDB
   </code>
   .
        Each TC instance tracks latencies for a set of activities it
        undertakes on behalf of API nodes or other data nodes; these
        activities include transactions, transaction errors, key reads,
        key writes, unique index operations, failed key operations of
        any type, scans, failed scans, fragment scans, and failed
        fragment scans.
  </p>
  <p>
   A set of counters is maintained for each activity, each counter
        covering a range of latencies less than or equal to an upper
        bound. At the conclusion of each activity, its latency is
        determined and the appropriate counter incremented.
   <code class="literal">
    tc_time_track_stats
   </code>
   presents this information
        as rows, with a row for each instance of the following:
  </p>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      Data node, using its ID
     </p>
    </li>
    <li class="listitem">
     <p>
      TC block instance
     </p>
    </li>
    <li class="listitem">
     <p>
      Other communicating data node or API node, using its ID
     </p>
    </li>
    <li class="listitem">
     <p>
      Upper bound value
     </p>
    </li>
   </ul>
  </div>
  <p>
   Each row contains a value for each activity type. This is the
        number of times that this activity occurred with a latency
        within the range specified by the row (that is, where the
        latency does not exceed the upper bound).
  </p>
  <p>
   The
   <code class="literal">
    tc_time_track_stats
   </code>
   table contains the
        following columns:
  </p>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      <code class="literal">
       node_id
      </code>
     </p>
     <p>
      Requesting node ID
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       block_number
      </code>
     </p>
     <p>
      TC block number
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       block_instance
      </code>
     </p>
     <p>
      TC block instance number
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       comm_node_id
      </code>
     </p>
     <p>
      Node ID of communicating API or data node
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       upper_bound
      </code>
     </p>
     <p>
      Upper bound of interval (in microseconds)
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       scans
      </code>
     </p>
     <p>
      Based on duration of successful scans from opening to
            closing, tracked against the API or data nodes requesting
            them.
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       scan_errors
      </code>
     </p>
     <p>
      Based on duration of failed scans from opening to closing,
            tracked against the API or data nodes requesting them.
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       scan_fragments
      </code>
     </p>
     <p>
      Based on duration of successful fragment scans from opening
            to closing, tracked against the data nodes executing them
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       scan_fragment_errors
      </code>
     </p>
     <p>
      Based on duration of failed fragment scans from opening to
            closing, tracked against the data nodes executing them
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       transactions
      </code>
     </p>
     <p>
      Based on duration of successful transactions from beginning
            until sending of commit
      <code class="literal">
       ACK
      </code>
      , tracked
            against the API or data nodes requesting them. Stateless
            transactions are not included.
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       transaction_errors
      </code>
     </p>
     <p>
      Based on duration of failing transactions from start to
            point of failure, tracked against the API or data nodes
            requesting them.
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       read_key_ops
      </code>
     </p>
     <p>
      Based on duration of successful primary key reads with
            locks. Tracked against both the API or data node requesting
            them and the data node executing them.
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       write_key_ops
      </code>
     </p>
     <p>
      Based on duration of successful primary key writes, tracked
            against both the API or data node requesting them and the
            data node executing them.
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       index_key_ops
      </code>
     </p>
     <p>
      Based on duration of successful unique index key operations,
            tracked against both the API or data node requesting them
            and the data node executing reads of base tables.
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       key_op_errors
      </code>
     </p>
     <p>
      Based on duration of all unsuccessful key read or write
            operations, tracked against both the API or data node
            requesting them and the data node executing them.
     </p>
    </li>
   </ul>
  </div>
  <h5>
   <a name="idm46045087584000">
   </a>
   Notes
  </h5>
  <p>
   The
   <code class="literal">
    block_instance
   </code>
   column provides the
   <a class="ulink" href="/doc/ndb-internals/en/ndb-internals-kernel-blocks-dbtc.html" target="_top">
    <code class="literal">
     DBTC
    </code>
   </a>
   kernel block instance
        number. You can use this together with the block name to obtain
        information about specific threads from the
   <a class="link" href="mysql-cluster-ndbinfo-threadblocks.html" title="25.6.17.62 The ndbinfo threadblocks Table">
    <code class="literal">
     threadblocks
    </code>
   </a>
   table.
  </p>
 </div>
 <br/>
</div>
