Сравнение планов выполненияCompare execution plans

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

В этом разделе описывается сравнение сходств и различий между фактическими графическими планами выполнения с помощью функции сравнения планов SQL Server Management StudioSQL Server Management Studio.This topic describes how to compare similarities and differences between actual graphical execution plans by using SQL Server Management StudioSQL Server Management Studio Plan Comparison feature. Эта функция доступна начиная с SQL Server Management StudioSQL Server Management Studio версии 16.This feature is available starting with SQL Server Management StudioSQL Server Management Studio v16.

Примечание

Фактические планы выполнения создаются после выполнения запросов или пакетов Transact-SQLTransact-SQL.Actual execution plans are generated after the Transact-SQLTransact-SQL queries or batches execute. Поэтому фактический план выполнения содержит сведения о времени выполнения, такие как фактическое число строк, фактические метрики использования ресурса и предупреждения времени выполнения (если они есть).Because of this, an actual execution plan contains runtime information, such as actual number of rows, resource usage metrics and runtime warnings (if any). Дополнительные сведения см. в статье Отображение фактического плана выполнения.For more information, see Display an Actual Execution Plan.

Возможность сравнить планы нужна специалистам по базам данных для устранения неполадок:The ability to compare plans is something that database professionals may have to do for troubleshooting reasons:

  • Найти причину внезапного замедления запроса или пакета.Find why a query or batch suddenly slowed down.
  • Понять влияние переписывания запроса.Understand the impact of a query rewrite.
  • Понаблюдать, как улучшение производительности в структуре схемы (например, новый индекс) изменило план выполнения.Observe how a specific performance-enhancing change introduced to the schema design (like a new index) has effectively changed the execution plan.

Пункт меню Сравнение планов позволяет параллельно сравнить два разных плана выполнения для удобства определения сходств и изменений, которые объясняют отличия в поведении для всех указанных выше причин.The Plan Comparison menu option allows side-by-side comparison of two different execution plans, for easier identification of similarities and changes that explain the different behaviors for all the reasons stated above. Этот параметр позволяет сравнивать:This option can compare between:

  • два ранее сохраненных файла плана выполнения ( .sqlplan);Two previously saved execution plan files (.sqlplan extension).
  • один активный план выполнения и один ранее сохраненный план выполнения запросов;One active execution plan and one previously saved query execution plan.
  • два выбранных плана запроса в хранилище запросов.Two selected query plans in Query Store.

Совет

Сравнение планов обрабатывает любые файлы SQLPLAN, даже из более старых версий SQL ServerSQL Server.Plan Comparison works with any .sqlplan files, even from older versions of SQL ServerSQL Server. Кроме того, этот параметр позволяет сравнивать планы автономно, так что вам не нужно подключаться к экземпляру SQL ServerSQL Server.Also, this option enables an offline compare, so there's no need to be connected to a SQL ServerSQL Server instance.

При сравнении двух планов выполнения области плана, выполняющие одинаковые функции, выделены одним цветом или узором.When two execution plans are compared, regions of the plan that do essentially the same are highlighted in the same color and pattern. Если вы нажмете на область одного цвета в одном плане, другой план будет центрирован по тому же узлу.Clicking on a colored region in one plan will center the other plan on the matching node in that plan. Вы по-прежнему можете сравнивать непарные операторы и узлы в планах выполнения, но в этом случае необходимо вручную выбрать операторы для сравнения.You can still compare unmatched operators and nodes of the execution plans, but in that case you must manually select the operators to compare.

Важно!

Только узлы, которые меняют форму плана, используются для проверки сходства.Only nodes considered to change the shape of the plan are used to check for similarities. Поэтому некоторые узлы могут быть не выделены цветом между двух узлов, которые входят в один подраздел плана.Therefore, there may be a node which is not colored in the middle of two nodes that are in the same subsection of the plan. Отсутствие цвета в данном случае означает, что узлы не учитываются при проверке схожести разделов.The lack of color in this case implies that the nodes were not considered when checking if the sections are equal.

Сравнение планов выполненияTo compare execution plans

  1. Откройте ранее сохраненный файл плана выполнения запроса (SQLPLAN) в меню Файл, Открыть файл, или перетащите файл плана в окно Среда Management StudioManagement Studio.Open a previously saved query execution plan file (.sqlplan) using the File menu and clicking on Open File, or drag a plan file to Среда Management StudioManagement Studio window. Кроме того, если вы только что выполнили запрос и выбрали показать его план выполнения, перейдите на вкладку План выполнения на панели результатов.Alternatively, if you just executed a query and chose to display its execution plan, move to the Execution Plan tab in the results pane.

  2. Щелкните правой кнопкой мыши в пустой области плана выполнения и выберите пункт Сравнить showplan.Right-click in a blank area of the execution plan and click Compare Showplan.

    Щелкните правой кнопкой мыши Сравнить showplanRight-click Compare Showplan

  3. Выберите второй файл плана запроса для сравнения.Choose the second query plan file that you would like to compare with. Откроется второй файл, чтобы вы могли сравнить планы.The second file will open so that you can compare the plans.

  4. Сравниваемые планы откроются в новом окне, по умолчанию один будет расположен сверху, а другой снизу.The compared plans will open a new window, by default with one on top and one on the bottom. По умолчанию будет выделено первое вхождение оператора или узла, которые присутствуют в обоих планах, но имеют различия.The default selection will be the first occurrence of an operator or node that is common in the compared plans, but showing differences between plans. Все выделенные операторы и узлы существуют в обоих планах.All highlighted operators and nodes exist in both compared plans. Если вы выберете выделенный оператор в верхнем или левом плане, соответствующий оператор будет автоматически выбран в нижнем или правом плане.Selecting an highlighted operator in the top or left plans automatically selects the corresponding operator in the bottom or right plans. Если вы выберете оператор корневого узла в любом из сравниваемых планов (узел SELECT на рисунке ниже), будет выбран соответствующий оператор корневого узла в другом плане.Selecting the root node operator in any of the compared plans (the SELECT node in the picture below) also selects the respective root node operator in the other compared plan.

    Сравнение двух сохраненных файлов плановPlan comparison of two saved plan files

    Совет

    Вы можете разместить планы слева и справа — щелкните правой кнопкой мыши пустую область плана выполнения и выберите Переключить ориентацию разделителя.You can toggle the display of the execution plan comparison to side-by-side, by right-clicking a blank area of the execution plan and selecting Toggle Splitter Orientation.

    Совет

    Все параметры масштабирования и навигации для планов выполнения работают в режиме сравнения планов.All zooming and navigation options available for execution plans work in plan comparison mode. Дополнительные сведения см. в статье Отображение фактического плана выполнения.For more details, see Display an Actual Execution Plan.

  5. Справа в области по умолчанию также откроется окно двойных свойств.A dual properties window also opens on the right side, in the scope of the default selection. Свойства, которые существуют в обоих сравниваемых операторах, но отличаются друг от друга, будут помечены знаком неравенства (≠) для удобства.Properties that exist in both compared operators but have differences will be preceded by the not equal sign (≠) for easier identification.

    Двойное окно свойствDual properties window

  6. Также в нижней части откроется окно навигации Анализ Showplan.The Showplan Analysis comparison navigation window also opens on the bottom. В нем три вкладки:Three tabs are available:

    1. На вкладке Параметры инструкции по умолчанию выбрано Выделить аналогичные операции и один выделенный оператор или узел в сравниваемых планах отмечен одним цветом или линией.In the Statement Options tab, the default selection is Highlight similar operations and the same highlighted operator or node in compared plans share the same color and line pattern. Нажимайте на тип линии, чтобы перемещаться между схожими областями в сравниваемых планах.Navigate between similar areas in compared plans by clicking on a lime pattern. Вы также можете настроить выделение различий, а не сходств, выбрав Выделить операции, не совпадающие с аналогичными сегментами.You can also choose to highlight differences in plans rather similarities, by selecting Highlight operations not matching similar segments.

    Примечание

    По умолчанию имена баз данных не учитываются при сравнении планов, чтобы можно было сравнивать планы для разных баз данных, но с одинаковой схемой.By default, database names are ignored when comparing plans to allow comparison of plans captured for databases that have differenty names, but share the same schema. Например, при сравнении планов из баз данных ProdDB и TestDB.For example when comparing plans from databases ProdDB and TestDB. Это поведение можно изменить с помощью параметра Не учитывать имя базы данных при сравнении операторов.This behavior can be changed with the Ignore database name when comparing operators option.

    Окно анализа ShowplanShowplan Analysis window

    1. Вкладка Несколько операторов полезна при сравнении планов с несколькими операторами, поскольку позволяет сравнивать правильную пару операторов.The Multi Statement tab is useful when comparing plans with multiple statements, by allowing the right statement pair to be compared.

      Несколько инструкций в сравниваемом планеMultiple statements in compared plan

    2. На вкладке Сценарии можно найти автоматический анализ некоторых наиболее важных аспектов, связанных с различиями Оценки кратности в сравниваемых планах.In the Scenarios tab you can find an automated analysis of some of the most relevant aspects to look at in what relates to Cardinality Estimation differences in compared plans. Для каждого оператора, указанного на левой панели, на правой панели отображаются сведения о сценарии по ссылке Щелкните здесь, чтобы ближе познакомиться с этим сценарием. , а также возможные причины, объясняющие этот сценарий.For each listed operator on the left pane, the right pane shows details about the scenario in the Click here for more information about this scenario link, and possible reasons to explain that scenario are listed.

      Различное предполагаемое число строкDifferent estimated rows

    Если это окно закрыто, щелкните правой кнопкой мыши на пустую область сравниваемого плана и выберите Параметры сравнения Showplan, чтобы открыть его повторно.If this window is closed, right-click on a blank area of a compared plan, and select Showplan Compare Options to re-open.

    Параметры сравнения планаPlan compare options

Сравнение планов выполнения в хранилище запросовTo compare execution plans in Query Store

  1. В хранилище запросов найдите запрос с несколькими планами выполнения.In Query Store, identify a query that has more than one execution plan. Дополнительные сведения о сценариях хранилища запросов см. в разделе Сценарии использования хранилища запросов.For more information on Query Store scenarios, see Query Store Usage Scenarios.

  2. Используйте сочетание клавиши SHIFT и мыши, чтобы выбрать два плана для одного запроса.Use a combination of the SHIFT key and your mouse to select two plans for the same query.

    Выбор двух планов в хранилище запросовSelect two plans in Query Store

  3. Нажмите кнопку Сравнить планы выбранного запроса в отдельном окне, чтобы запустить сравнение планов.Use the button Compare the plans for the select query in a separate window to start plan comparison. Затем применяются шаги 4–6 для сравнения планов выполнения.Then steps 4 through 6 of To compare execution plans are applicable.

    Сравнение Showplan в хранилище запросовCompare Showplan in Query Store