Usar un archivo de entrada XML para la optimización
Todas las operaciones de optimización que puede realizar con la interfaz gráfica de usuario (GUI) del Asistente para la optimización de Database Engine (Motor de base de datos) y la utilidad de la línea de comandos dta pueden definirse en el archivo de entrada XML del Asistente para la optimización de Database Engine (Motor de base de datos). Sin embargo, el archivo de entrada XML admite otras opciones de optimización además de las que están disponibles con la GUI y la utilidad de la línea de comandos.
El archivo de entrada XML utiliza el esquema XML publicado del Asistente para la optimización de Database Engine (Motor de base de datos), que se encuentra en la siguiente ubicación del directorio de instalación de SQL Server 2008:
C:\Archivos de programa\Microsoft SQL Server\10\Tools\Binn\schemas\sqlserver\2004\07\dta\dtaschema.xsd
También se puede descargar en la siguiente dirección URL:
https://schemas.microsoft.com/sqlserver/2004/07/dta
El uso de un archivo de entrada XML permite utilizar las herramientas XML que desee al optimizar bases de datos, además de proporcionar más flexibilidad a los administradores de bases de datos experimentados. Por ejemplo, mediante el archivo de entrada XML puede especificar una configuración que contenga una combinación de estructuras de diseño físicas hipotéticas y existentes (índices, vistas indizadas y particiones). A continuación, puede usar la utilidad de línea de comandos dta para optimizar la base de datos como si esta combinación de estructuras de diseño físicas hipotéticas y existentes ya estuviera implementada. Esto permite realizar análisis de escenarios condicionales sin aumentar la sobrecarga inherente a la implementación de una configuración real antes de la optimización.
Las siguientes subsecciones describen las operaciones de optimización que sólo pueden realizarse mediante el archivo de entrada XML del Asistente para la optimización de Database Engine (Motor de base de datos). Para obtener más información acerca de este archivo y cómo utilizarlo, vea Referencia del archivo de entrada XML (Asistente para la optimización de motor de base de datos).
Especificar las configuraciones con el elemento de configuración
Aunque la característica de configuración especificada por el usuario puede utilizarse de forma limitada en la GUI del Asistente para la optimización de Database Engine (Motor de base de datos), esta característica sólo se admite completamente cuando se utiliza el archivo de entrada XML con la utilidad dta de la línea de comandos. Cuando utiliza el archivo de entrada XML, puede especificar en él una configuración hipotética, o bien una configuración que contenga una combinación de estructuras de diseño físicas hipotéticas y existentes. A continuación, después de validar el archivo de entrada frente al esquema XML del Asistente para la optimización de Database Engine (Motor de base de datos), puede utilizar el archivo como entrada para la utilidad de línea de comandos dta. Durante la sesión de optimización, el Asistente para la optimización de Database Engine (Motor de base de datos) ejecuta la carga de trabajo especificada en las bases de datos. Sin embargo, el Asistente para la optimización de motor de Database Engine (Motor de base de datos) no evalúa la configuración existente de los índices, las vistas indizadas y las particiones. En cambio, el Asistente para la optimización de Database Engine (Motor de base de datos) utiliza la configuración que combina estructuras hipotéticas y existentes. El uso de la configuración hipotética le permite analizar los efectos de una configuración determinada en el rendimiento de su base de datos sin la sobrecarga que supone implementar la configuración real.
Para especificar una configuración que contenga estructuras de diseño físicas hipotéticas y existentes, utilice el subelemento Configuration después del elemento TuningOptions en el archivo de entrada XML del Asistente para la optimización de Database Engine (Motor de base de datos). Para obtener más información, vea Cómo realizar análisis de exploración y Ejemplo de archivo de entrada XML con configuración especificada por el usuario (DTA).
Optimizar cargas de trabajo insertadas con el elemento EventString
Es posible evitar por completo el uso de un archivo de carga de trabajo cuando utiliza la entrada XML con el Asistente para la optimización de Database Engine (Motor de base de datos). En su lugar, puede especificar una carga de trabajo y su peso insertado en el archivo de entrada XML. Al evitar el uso de un archivo o tabla de carga de trabajo independiente se obtienen las siguientes ventajas:
Puede optimizar los servidores remotos con más facilidad porque no debe preocuparse de si el archivo o la tabla independiente está disponible para la optimización en el Asistente para la optimización de Database Engine (Motor de base de datos).
Es más fácil incorporar la funcionalidad del Asistente para la optimización de Database Engine (Motor de base de datos) en scripts que pueden utilizarse en todo el entorno empresarial.
Para especificar una carga de trabajo insertada, utilice el subelemento EventString, para el que opcionalmente puede especificar un peso asociado. Cuando utilice este subelemento, lo está especificando para el elemento principal Workload en lugar de especificar un archivo o tabla de carga de trabajo independiente. Los siguientes ejemplos de código muestran cómo el uso de un elemento EventString con el archivo de entrada XML compara el uso de un archivo de carga de trabajo normal con el archivo de entrada XML:
Ejemplos
A. Especifique un archivo de carga de trabajo independiente con el elemento de carga de trabajo
<DTAInput>
...code removed
<Workload>
<File>MyWorkload.sql</File>
</Workload>
...code removed
</DTAInput>
B. Especifique una carga de trabajo insertada con el elemento EventString
<DTAInput>
...code removed
<Workload>
<EventString Weight="100">
SELECT * FROM MyTable1
WHERE MyColumn1 > 200
ORDER BY MyColumn1
</EventString>
<EventString Weight="1">
SELECT * FROM MyTable2
WHERE MyColumn2 > 200
ORDER BY MyColumn2
</EventString>
</Workload>
...code removed
</DTAInput>
En el ejemplo anterior, se han especificado distintos pesos para cada consulta en el elemento EventString: un peso de 100 y un peso de 1. Esto significa que cuando el Asistente para la optimización de Database Engine (Motor de base de datos) optimiza estas consultas, la aplicación tratará la consulta con un peso de 100 como si hubiera 100 instancias de esa consulta en comparación con una sola instancia de la consulta con un peso de 1. En el ejemplo anterior, la primera consulta es 100 veces más importante que la segunda consulta a efectos de evaluación para el Asistente para la optimización de Database Engine (Motor de base de datos). Tenga en cuenta también que el signo mayor que (>) se ha convertido en > porque > es un carácter reservado con un significado especial en XML.
Para ver un ejemplo de la especificación de una carga de trabajo insertada con el elemento EventString, vea Ejemplo de archivo de entrada XML con carga de trabajo insertada (DTA).
Omitir constantes en una carga de trabajo con el elemento IgnoreConstantsInWorkload
Las cargas de trabajo pueden contener instrucciones que hagan referencia a constantes. El Asistente para la optimización de Database Engine (Motor de base de datos) puede utilizar constantes en una carga de trabajo para hacer recomendaciones que incluyen vistas de índices con condiciones de selección o funciones de partición por intervalos para índices con particiones.
No obstante, puede que a veces tener en cuenta constantes en una carga de trabajo no sea beneficioso para el Asistente para la optimización de Database Engine (Motor de base de datos). Por ejemplo, considere una carga de trabajo que contiene la siguiente instrucción:
UPDATE BankAccountTable
SET AccountBalance = AccountBalance - 1000.00
WHERE CustomerID =
(SELECT CustomerID FROM Customer WHERE CustomerName = 'Alice')
Esta carga de trabajo puede incluir la constante 'Alice' porque la carga de trabajo se capturó cuando Alice realizó una transacción. Si el Asistente para la optimización de Database Engine (Motor de base de datos) utilizó esta constante, es posible que no produzca una recomendación de optimización efectiva. En este caso, tendría sentido especificar que el Asistente para la optimización de Database Engine (Motor de base de datos) omita las constantes al utilizar esta carga de trabajo para optimizar una base de datos.
El elemento IgnoreConstantsInWorkload, que reside en el elemento TuningOptions, se puede especificar en el archivo de entrada XML para forzar al Asistente para la optimización de Database Engine (Motor de base de datos) a omitir todas las constantes de una carga de trabajo. Cuando este elemento se especifica, las vistas indizadas que puede recomendar el Asistente para la optimización de Database Engine (Motor de base de datos) no contendrán condiciones de selección. Además, las constantes utilizadas en las funciones de partición se derivarán únicamente de los datos y no de las constantes contenidas en la carga de trabajo.
Usar un servidor de prueba para optimizar una carga de trabajo para un servidor de producción
La optimización de una gran carga de trabajo puede generar una sobrecarga importante en el servidor que se está optimizando debido a las muchas llamadas que el Asistente para la optimización de Database Engine (Motor de base de datos) realiza al optimizador de consultas durante el proceso de optimización. El uso de un servidor de prueba además del servidor de producción elimina este problema. El Asistente para la optimización de Database Engine (Motor de base de datos) admite este escenario de una sola manera:
Debe asegurarse de que el usuario que desea realizar la optimización existe tanto en el servidor de producción como en el de prueba. Si es miembro de la función fija de servidor sysadmin, no es necesario realizar este paso.
El servidor de prueba para la optimización se especifica en el archivo de entrada XML junto con el resto de parámetros que definen su sesión de optimización.
La utilidad de la línea de comandos dta se utiliza para iniciar la sesión de optimización y comenzar el análisis de la carga de trabajo.
Durante esta sesión de optimización del servidor de prueba, el Asistente para la optimización de Database Engine (Motor de base de datos) realiza las llamadas imprescindibles al servidor de producción para recuperar información sobre su perfil de hardware, metadatos de la base de datos y estadísticas para que el optimizador de consultas pueda optimizar con precisión las consultas en el servidor de prueba.
En realidad, en este escenario se optimiza el servidor de prueba, lo que duplica el entorno del servidor de producción. Después de obtener una recomendación de configuración del diseño de la base de datos como resultado de la optimización del servidor de prueba, puede implementarla en el servidor de producción durante el mantenimiento. Este proceso minimiza el impacto en el rendimiento producido por el Asistente para la optimización de Database Engine (Motor de base de datos). Además, este proceso reduce el tiempo necesario para copiar datos del servidor de producción al servidor de prueba, así como la inversión necesaria para duplicar la eficacia del hardware del servidor de producción en el entorno de prueba.
Para especificar un servidor de prueba, utilice el subelemento TestServer bajo el elemento principal TuningOptions, tal y como se muestra en el siguiente ejemplo:
Ejemplo
<DTAInput>
...code removed
<TuningOptions>
<TestServer>MyTestServer</TestServer>
<FeatureSet>IDX_IV</FeatureSet>
<Partitioning>NONE</Partitioning>
<KeepExisting>NONE</KeepExisting>
</TuningOptions>
...code removed
</DTAInput>
Para obtener más información acerca de cómo utilizar esta característica y otros ejemplos de código, vea Reducir la carga de optimización del servidor de producción.