Limitar la duración y los eventos de optimización

Puede controlar las sesiones de optimización del Asistente para la optimización de motor de base de datos mediante la limitación del tiempo de optimización de la aplicación o la limitación del número de eventos que se optimizan. La limitación de la duración del análisis de optimización resulta útil si se necesita optimizar un servidor de producción durante un período de mantenimiento. La limitación del número de eventos optimizados resulta útil si se comparan dos configuraciones hipotéticas mediante la optimización de la misma carga de trabajo para cada una.

El Asistente para la optimización de motor de base de datos podría no optimizar todos los eventos de una carga de trabajo para una determinada configuración. Si se especifica el número de eventos que se optimizarán, se garantiza que la sesión de optimización para cada configuración tiene en cuenta el mismo número de eventos optimizables para que se puedan comparar mejor los resultados.

Controlar la duración de la optimización

El Asistente para la optimización de motor de base de datos analiza una carga de trabajo hasta que encuentra el conjunto óptimo de estructuras físicas de rendimiento posibles para las bases de datos especificadas. La cantidad de tiempo que tarda depende del tamaño de la carga de trabajo. El Asistente para la optimización de motor de base de datos puede tardar varios días en realizar un análisis minucioso de una carga de trabajo que contenga cientos de eventos. Aunque las bases de datos están disponibles durante todo el análisis, el proceso puede afectar al rendimiento.

Para controlar el tiempo que dura el análisis de una carga de trabajo en el Asistente para la optimización de motor de base de datos, configure el tiempo máximo. El tiempo máximo es el número de horas y minutos que desea que el Asistente para la optimización de motor de base de datos emplee en el análisis de una carga de trabajo. El resultado de la configuración del tiempo máximo es una recomendación basada en la mejor solución que el Asistente para la optimización de motor de base de datos puede producir antes de que se agote el tiempo.

En la interfaz gráfica de usuario (GUI) del Asistente para la optimización de motor de base de datos, este parámetro está configurado en 1 hora de forma predeterminada. En la utilidad de línea de comandos dta, el límite predeterminado está configurado en 8 horas. Si el análisis completo requiere menos tiempo que el límite configurado, la optimización se detiene al finalizar. Puede especificar un tiempo de optimización ilimitado para generar la mejor recomendación posible en la interfaz de ambas herramientas.

En los siguientes apartados se describe cómo configurar esta opción de optimización en la GUI y en el símbolo del sistema.

Configurar el tiempo de optimización en la interfaz gráfica de usuario

Para configurar el límite de tiempo de optimización en la GUI del Asistente para la optimización de motor de base de datos, debe activar la casilla Limitar tiempo de optimización en la ficha Opciones de optimización y, después, especificar la fecha y la hora de Detener el.

Debe tener en cuenta los siguientes aspectos:

  • En general, si se especifica un tiempo de optimización prolongado se obtienen mejores resultados porque se puede analizar una cantidad mayor de la carga de trabajo. Las recomendaciones se basan en información más completa.

  • De forma predeterminada, el límite de optimización máximo está configurado en 1 hora.

  • Para especificar un tiempo de optimización ilimitado, desactive la casilla Limitar tiempo de optimización.

Configurar el tiempo de optimización en la utilidad de línea de comandos dta

Es posible configurar el límite de tiempo de optimización mediante la utilidad de línea de comandos dta especificando un valor para el argumento -A. Por ejemplo, examine el siguiente comando dta:

dta -E -s MySession -D AdventureWorks2008R2 -if MyWorkloadScript.sql -fa IDX -A 120

donde -E especifica una conexión de confianza, -D especifica la base de datos que se debe optimizar, -if especifica el archivo de carga de trabajo, -fa IDX especifica que el Asistente para la optimización de motor de base de datos sólo debe considerar la adición de índices en su recomendación y -A 120 significa que la optimización debe completarse en el plazo de 120 minutos.

Si la utilidad dta se ejecuta desde el símbolo del sistema (en lugar de llamarla en un script de optimización automática), presione CTRL+C para detener la optimización. A continuación, el Asistente para la optimización de motor de base de datos devuelve la mejor recomendación posible en función de la cantidad de carga de trabajo que se haya consumido hasta ese momento.

Debe tener en cuenta los siguientes aspectos:

  • En general, si se especifica un tiempo de optimización prolongado se obtienen mejores resultados porque se puede analizar una cantidad mayor de la carga de trabajo. Por lo tanto, las recomendaciones se basan en información más completa.

  • Para especificar una duración ilimitada de la optimización, utilice el argumento de línea de comandos –A 0. Con este argumento, obtendrá la mejor recomendación para toda la carga de trabajo.

  • Si no se especifica la opción –A, se usa el valor predeterminado –A 480 (tiempo de optimización de 8 horas).

  • Incluso si presiona CTRL+C, la utilidad dta puede tardar algún tiempo en llenar los informes de análisis antes de cerrarse.

Configurar el tiempo de optimización en el archivo de entrada XML

También puede configurar el límite máximo de tiempo de optimización en el archivo de entrada XML que se puede utilizar con la utilidad de línea de comandos dta. Para especificar un límite de tiempo de optimización en minutos en el archivo de entrada XML, use el subelemento TuningTimeInMin situado bajo el elemento principal TuningOptions. Para obtener más información acerca del archivo de entrada XML, vea Referencia del archivo de entrada XML (Asistente para la optimización de motor de base de datos).

Controlar el número de eventos que se optimizarán

Puede controlar el número de eventos de las cargas de trabajo optimizados por el Asistente para la optimización de motor de base de datos. Esta opción solo está disponible en la utilidad de línea de comandos dta mediante el argumento –n. El comportamiento de la utilidad dta al usar el argumento -n depende del valor especificado para el argumento -A, que especifica el límite de tiempo de optimización, de la siguiente manera:

  • La utilidad dta se detiene después de optimizar el número especificado de eventos o en cuanto transcurra el límite de tiempo de optimización. Si no se especifica el argumento -n, la utilidad dta optimiza todos los eventos de la carga de trabajo de forma predeterminada. Si no se especifica el argumento -A, la utilidad dta supone de forma predeterminada un límite de tiempo de optimización de 8 horas.

  • Para asegurarse de que se optimiza el número de eventos indicado con el argumento -n, especifique también 0 para el argumento -A, que indica un tiempo de optimización ilimitado. Por ejemplo, -n 250 -A 0.

Especificar el número de eventos que se optimizarán en el archivo de entrada XML

También puede especificar el número de eventos que se optimizarán en el archivo de entrada XML que se puede utilizar con la utilidad de línea de comandos dta. Para especificar el número de eventos que se optimizarán en el archivo de entrada XML, use el subelemento NumberOfEvents situado bajo el elemento principal TuningOptions. Para obtener más información acerca del archivo de entrada XML, vea Referencia del archivo de entrada XML (Asistente para la optimización de motor de base de datos).

Prácticas recomendadas para limitar el tiempo de optimización y el número de eventos optimizados

A continuación se incluyen sugerencias para limitar el tiempo de optimización y el número de eventos optimizados:

  • Para las cargas de trabajo pequeñas o de consulta única (menos de 100 eventos), especifique un tiempo de optimización ilimitado. De esa manera, el Asistente para la optimización de motor de base de datos le proporcionará las mejores recomendaciones y, en la mayoría de los casos, la optimización se llevará a cabo en un tiempo relativamente breve.

  • Para las cargas de trabajo grandes (más de 100 eventos), tenga en cuenta las siguientes opciones en el orden en que se enumeran. Recurra a la última opción (4) sólo después de considerar las opciones 1, 2 y 3.

    1. Si el usuario tiene una restricción de tiempo, limite el tiempo de optimización.

    2. Si es suficiente con optimizar un número fijo de eventos (por ejemplo, si los primeros 10.000 eventos pueden ser representativos del resto de la carga de trabajo), use la utilidad de línea de comandos dta para especificar el número de eventos con el argumento –n.

    3. Si usa la utilidad de línea de comandos dta y desea limitar más el tiempo de optimización, puede usar los argumentos –A y –n. Por ejemplo, al especificar -A 240 y –n 1000, el Asistente para la optimización de motor de base de datos detiene la optimización cuando se han optimizado 1000 eventos o en cuanto transcurren 4 horas, lo que ocurra primero.

    4. El tiempo empleado en la optimización depende de la complejidad de las consultas (número de tablas a las que se hace referencia), los conjuntos de características elegidos (la optimización de vistas indizadas consume más tiempo que la optimización de índices) y el tamaño de los datos (para la creación de estadísticas). En la mayoría de los casos, el Asistente para la optimización de motor de base de datos emplea la mayor parte del tiempo en realizar llamadas al optimizador de consultas. La siguiente es una regla general en relación con la cantidad de tiempo apropiada que se puede dar al Asistente para la optimización de motor de base de datos:

      Para consultas sencillas que hacen referencia a un máximo de tres tablas, prevea en torno a 1 segundo por consulta si sólo se optimizan índices y en torno a 10 segundos por consulta si se optimizan índices y vistas indizadas. Para consultas complejas que hacen referencia a más de tres tablas, prevea en torno a 10 segundos por consulta si sólo se optimizan índices y en torno a 100 segundos por consulta si se optimizan índices y vistas indizadas.

  • Si el Asistente para la optimización de motor de base de datos indica que se ha consumido el 100% de la carga de trabajo, significa que se ha analizado la carga de trabajo completa, pero no necesariamente que se ha optimizado. Para determinar si se ha optimizado la carga de trabajo completa, busque en el registro de optimización el siguiente mensaje:

    "No se optimizaron todos los eventos de la carga de trabajo. Considere aumentar el tiempo enlazado o especifique el número de eventos que se va a considerar en la entrada XML."

    Si el mensaje aparece en el registro de optimización, el Asistente para la optimización de motor de base de datos no ha podido optimizar la carga de trabajo completa. Para resolverlo, especifique un tiempo de optimización más prolongado. Para asegurarse de que se optimizan todos los eventos de la carga de trabajo, puede especificar un tiempo de optimización ilimitado. Si decide no especificar un tiempo de optimización ilimitado, el Asistente para la optimización de motor de base de datos intenta optimizar el mayor número posible de eventos en el tiempo de optimización especificado.

Nota   No hay asignación directa entre los modos rápido, medio y exhaustivo del Asistente para optimización de índices de Microsoft SQL Server 2000 y los argumentos –A y –n del Asistente para la optimización de motor de base de datos. En general, si la optimización en un modo determinado (rápido, medio o exhaustivo) en SQL Server 2000 tardaba una cantidad específica de tiempo, la misma cantidad de tiempo proporciona recomendaciones comparables o mejores en el Asistente para la optimización de motor de base de datos de SQL Server 2005. Se recomienda que los usuarios del modo exhaustivo utilicen el Asistente para la optimización de motor de base de datos con un tiempo de optimización ilimitado y un número ilimitado de eventos de optimización en la carga de trabajo.

Métodos adicionales para limitar la duración de la optimización

Además de limitar el tiempo de ejecución del Asistente para la optimización de motor de base de datos, puede optimizar únicamente un subconjunto de las tablas de la base de datos.

También están disponibles las siguientes opciones:

  • Mantener todas las estructuras de diseño físico (PDS) existentes

  • Mantener sólo índices

  • Mantener solamente índices clúster.

En la recomendación final, el Asistente para la optimización de motor de base de datos incluye cualquier sugerencia de índice o de consulta, incluso si el índice no es el más apropiado para la tabla. Se pueden proponer y recomendar índices de otras tablas a las que se hace referencia en la consulta. No obstante, todos los índices que se especifican como sugerencias siempre formarán parte de la recomendación final. Las sugerencias pueden impedir que el Asistente para la optimización de motor de base de datos elija el plan de ejecución idóneo. Antes de analizar la carga de trabajo, considere la posibilidad de quitar las sugerencias de índice de las consultas.