Compartir a través de


Interpretar planes de ejecución de objetos con particiones

Nuevo: 5 de diciembre de 2005

Los planes de ejecución de consultas que implican tablas de base de datos con particiones, índices y vistas indizadas suelen tener operadores Nested Loops que representan combinaciones entre las particiones con operadores Constant Scan en la parte externa, y recorridos o búsquedas del objeto con particiones en la parte interna.

En los planes de ejecución de objetos con particiones, la combinación Nested Loops lee una o varias particiones de índice o tabla de la parte interna. Los números que aparecen en el atributo Values de los operadores Constant Scan representan los números de partición. La mención de los números de partición confirma que el optimizador de consultas está realizando la eliminación de particiones.

La eliminación de particiones se produce durante la compilación y la ejecución. Las eliminaciones que se producen en tiempo de compilación se pueden ver en los planes de ejecución generados por las opciones SET (SHOWPLAN_ALL o SHOWPLAN_XML), o bien al hacer clic en Mostrar plan de ejecución estimado en SQL Server Management Studio. Las eliminaciones que se producen en tiempo de ejecución se pueden ver en los planes de ejecución generados por las opciones SET (STATISTICS PROFILE o STATISTICS XML), o bien al hacer clic en Incluir plan de ejecución real en Management Studio.

Cuando se generan planes paralelos para índices o tablas con particiones, aparece un operador Parallelism entre los operadores de combinación Constant Scan y Nested Loops. En este caso, los distintos subprocesos de la parte exterior de la combinación leen y trabajan en una partición diferente. El número de subprocesos puede ser diferente del número de particiones. Si el número de subprocesos y particiones es igual, cada subproceso trabajará en una partición. Si hay más subprocesos que particiones, el exceso de subprocesos permanece inactivo mientras se procesan las particiones. Si hay menos subprocesos que particiones, los subprocesos inician el trabajo y el subproceso que termine primero trabajará en la siguiente partición. Los subprocesos procesan las particiones de una en una. Las particiones no se comparten entre varios subprocesos, pero se pueden procesar varias particiones en paralelo.

Ejemplo

La siguiente consulta tiene acceso a dos particiones de la tabla con particiones Production.TransactionHistoryArchive de la base de datos de ejemplo AdventureWorks. Cuando se generan planes de presentación para esta consulta, se produce un operador de combinación Nested Loops que muestra cuándo se combinan las dos particiones para satisfacer la consulta. Inmediatamente después del operador de combinación Nested Loops aparece un operador Constant Scan. Las dos particiones que se combinan para satisfacer esta consulta se identifican en el atributo Values que se muestra para el operador Constant Scan.

[!NOTA] Para reproducir este ejemplo, primero hay que ejecutar la secuencia de comandos PartitionAW.sql en la base de datos de ejemplo AdventureWorks. Para obtener más información, vea 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

Si se produce un plan de ejecución gráfico en Management Studio, mueva el mouse (ratón) sobre el icono del operador Constant Scan o haga clic con el botón secundario en el operador Constant Scan y elija Propiedades. En el panel Propiedades, el atributo Values muestra ((1)), ((2)). Estos números corresponden a las particiones implicadas en la consulta.

Si se genera un plan de presentación XML, busque un elemento ConstantScan en el elemento NestedLoops. Los números de partición se muestran para el subelemento Values en ConstantScan de la forma siguiente:

<ConstantScan>

     <Values>

          <Row>

               <ScalarOperator ScalarString="(1)">

                    <Const ConstValue="(1)" />

               </ScalarOperator>

          </Row>

          <Row>

               <ScalarOperator ScalarString="(2)">

                    <Const ConstValue="(2)" />

               </ScalarOperator>

          </Row>

     </Values>

</ConstantScan>

Vea también

Referencia

Nested Loops (operador de Showplan)
Constant Scan (operador de Showplan)
Parallelism (operador de Showplan)
Mostrar planes de ejecución gráficos (SQL Server Management Studio)

Conceptos

Tablas e índices con particiones
Mostrar planes de ejecución mediante las opciones SET del plan de presentación (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005