Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-13994

do not aggressively pre-fetch data for parallelCollectionScan

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: 2.6.1
    • Fix Version/s: 2.6.4, 2.7.3
    • Component/s: Querying
    • Labels:
      None
    • Backport Completed:

      Description

      Issue Status as of Jul 22, 2014

      ISSUE SUMMARY
      The parallelCollectionScan command pre-fetches the first extent for each cursor upon construction of the cursors. During cursor iteration, when a cursor needs to hop to the next extent, it also pre-fetches that extent. This can result in pre-fetching of large amounts of data. Performance tests show that disabling pre-fetching is more performant overall in most cases.

      USER IMPACT
      For large numbers of cursors with a big collection, this can mean aggressive pre-fetching of many gigabytes. This can cause large, unwanted spikes in disk IO.

      WORKAROUNDS
      None.

      AFFECTED VERSIONS
      All production releases up to version 2.6.3 are affected by this issue.

      FIX VERSION
      The fix is included in the 2.6.4 production release.

      RESOLUTION DETAILS
      Pre-fetching was disabled for the parallelCollectionScan command.

      Original description

      The parallelCollectionScan command pre-fetches the first extent for each cursor upon construction of the cursors. During cursor iteration, when a cursor needs to hop to the next extent, it also pre-fetches that extent.

      For large numbers of cursors with a big collection, this can mean aggressive pre-fetching of many gigabytes. This can cause large, unwanted spikes in disk IO.

        Attachments

          Activity

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: