Поделиться через


Интерпретация планов выполнения секционированных объектов

Добавления: 5 декабря 2005 г.

Планы выполнения запросов, которые включают секционированные таблицы, представления и индексированные представления базы данных, обычно включают операторы Nested Loops, которые представляют собой соединения между секциями с операторами Constant Scan на внешней стороне и просмотр или поиск секционированного объекта на внутренней стороне.

В планах выполнения секционированных объектов соединение Nested Loops считывает одну или более секций таблиц или индексов с внутренней стороны. Числа, содержащиеся в атрибуте Значения операторов Constant Scan, представляют собой номера секций. Указание номеров секций подтверждает, что оптимизатор запросов выполняет устранение секций.

Устранение секций может выполняться как во время компиляции, так и во время выполнения. Устранения, выполняемые во время компиляции, можно увидеть в планах выполнения, формируемых с помощью параметров SHOWPLAN_ALL и SHOWPLAN_XML инструкции SET, или щелкнув Показать предполагаемый план выполнения в среде SQL Server Management Studio. Устранения, выполняемые во время выполнения, можно увидеть в планах выполнения, формируемых с помощью параметров SHOWPLAN_ALL и SHOWPLAN_XML инструкции SET, или щелкнув Включить действительный план выполнения в среде Management Studio.

Если для секционированных таблиц или индексов формируются параллельные планы, то между операторами соединения Constant Scan и Nested Loops появляется операторParallelism. В этом случае каждый из нескольких потоков на внешней стороне соединения считывает и работает на разных секциях. Количество потоков может отличаться от количества секций. Если количество потоков и секций одинаково, то каждый поток работает ровно на одной секции. Если количество потоков превышает количество секций, то дополнительные потоки простаивают при обработке секций. Если количество секций превышает количество потоков, то потоки начинают работу, и первый освободившийся поток переходит к работе на следующей секции. В любое время только один поток обрабатывает секцию. Совместное использование несколькими потоками одной секции не происходит, но несколько секций могут обрабатываться параллельно.

Пример

Следующий запрос получает доступ к двум секциям секционированной таблицы Production.TransactionHistoryArchive в образце базы данных AdventureWorks. Когда для этого запроса создаются инструкции Showplan, то формируется оператор соединения Nested Loops, который показывает, когда две секции таблицы соединяются, чтобы удовлетворить запрос. Оператор Constant Scan появляется непосредственно после оператора Nested Loops. Две секции, соединяемые, чтобы удовлетворить этому запросу, определяются в атрибуте Значения, включенном в список оператора Constant Scan.

ms345599.note(ru-ru,SQL.90).gifПримечание.
Для выполнения этого примера потребуется сначала запустить сценарий PartitionAW.sql для образца базы данных AdventureWorks. Дополнительные сведения см. в разделе Readme_PartitioningScript.
USE AdventureWorks;
GO
-- The following SET statement option produces an XML Showplan.
-- To produce a graphical execution plan, click the Include Actual
-- Execution Plan icon in the Management Studio toolbar.
SET STATISTICS XML ON;
GO
SELECT ProductID, Quantity, TransactionDate
FROM Production.TransactionHistoryArchive
WHERE TransactionDate <= '12/02/2003'
ORDER BY ProductID;
GO

Если графический план выполнения формируется в среде Management Studio, то поместите мышь над значком оператора Constant Scan или щелкните правой кнопкой мыши значок оператора Constant Scan и выберите Свойства. На панели свойств в атрибуте Значения перечислены ((1)), ((2)). Эти числа соответствуют секциям, содержащимся в запросе.

Если формируется XML Showplan, найдите элемент ConstantScan под элементом NestedLoops. Номера секций перечисляются для вложенного элемента Значения под элементом ConstantScan следующим образом:

<ConstantScan>

     <Values>

          <Row>

               <ScalarOperator ScalarString="(1)">

                    <Const ConstValue="(1)" />

               </ScalarOperator>

          </Row>

          <Row>

               <ScalarOperator ScalarString="(2)">

                    <Const ConstValue="(2)" />

               </ScalarOperator>

          </Row>

     </Values>

</ConstantScan>

См. также

Справочник

Оператор Nested Loops инструкции Showplan
Оператор Constant Scan инструкции Showplan
Оператор Parallelism инструкции Showplan
Графическое отображение планов выполнения (SQL Server Management Studio)

Основные понятия

Секционированные таблицы и индексы
Отображение планов выполнения с помощью параметров Showplan инструкции SET (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005