2010-09-30 13 views
6

Tengo un procedimiento almacenado que contiene muchos comandos SELECT.¿Se puede configurar MAXDOP solo para un procedimiento almacenado?

En lugar de poner OPTION (MAXDOP 8) al final de cada comando de selección, ¿hay alguna manera de configurarlo al final del procedimiento almacenado y eliminarlo al final, sin configurarlo realmente en el servidor?

ex.

sp_configure 'max degree of parallelism', 4 
go 
reconfigure with override 
+1

¿Por qué 'MAXDOP 8?' ¿Tiene 'max degree of parallelism 1' en el nivel del servidor? ¿Qué problema hay con el procedimiento almacenado en el que sientes la necesidad de agregar opciones de consulta? – LittleBobbyTables

+0

¿Qué problema (s) intentas corregir usando esta configuración? Sospecho que puede haber una mejor manera si puede publicar más detalles (incluido el código). –

Respuesta

4

Lamentablemente, no.

Sus opciones se configuran en el nivel del servidor usando sp_configure 'max degree of parallelism', o actualiza cada instrucción SELECT en su procedimiento almacenado para usar OPTION (MAXDOP 8).

Dicho esto, las opciones de consulta deben ser un último recurso y si sus consultas tienen un bajo rendimiento, puede haber un problema subyacente.

2

Afortunadamente no. La forma recomendada de hacer tales cosas es no hacerlas en absoluto. La sobreescritura de la consulta debería ser solo la excepción rara cuando SQL Server elige realmente un plan incorrecto, no la regla. Y cuando un plan de consulta tiene que ser forzada, la acción adecuada es utilizar guías de plan de consulta:

Lo más importante a entender es que las sugerencias de consulta son diseño opciones de tiempo (requieren código cambios para modificar las consultas) y abusar de ellos reduce en gran medida el mantenimiento futuro de la aplicación (cuando el hardware cambia, o en diferentes sitios de implementación, la sugerencia será incorrecto). Por el contrario, las guías del plan de consulta son implementación opciones de tiempo, no requieren cambios de código y se pueden personalizar en cada sitio implementado, de acuerdo con la capacidad de hardware y la carga de trabajo en el sitio.

+0

El uso de algunos consejos rara vez se recomienda, pero todavía los tenemos disponibles por una razón u otra y es posible que desee pensar por qué;) ... Lo siento, pero esta respuesta no sirve de nada. –

11

Ojalá hubiera una forma de configurar MAXDOP para el alcance del proceso, pero estoy de acuerdo en que no hay forma de hacerlo.

Para contrarrestar algunos de los consejos anteriores, hay buenas razones para usar la sugerencia MAXDOP, como las compilaciones de índices posteriores, las actualizaciones o compilaciones de datos en un entorno multiprocesador, pero donde MAXDOP se configura por debajo del recuento de procesadores para ayudar a equilibrar la actividad durante las horas pico "ocupadas", como las horas hábiles normales. A diferencia de algunos consejos, como sugerencias de índice, esto no obligará a sus procesos a utilizar más hilos, pero le permitirá hacerlo si el plan así lo desea.

Algunas versiones de índice se ejecutarán casi el doble de rápido si duplica los hilos, por lo que hay un beneficio real.

+0

[Más 1] para reconocer casos de bordes específicos que esta opción es beneficiosa. – l46kok

Cuestiones relacionadas