Procesamiento en Paralelo | SQL Server Performance Forums

SQL Server Performance Forum – Threads Archive

Procesamiento en Paralelo

Necesito su ayuda Como hago en SQL Server para que una consulta pueda ejecutarse en varios procesadores al mismo tiempo. El problema es que el costo del paralelismo en la configuración del SQL por defecto es 5. Este es el valor de comparación que utiliza el SQL para tomar la decisión de dividir una consulta en varios procesadores. No lo puedo colocar en 0 porque estaría obligango al manejador a que cualquier consulta la ejecute en varios procesadores. Lo que quisiera saber es si existe algun comando en SQL para hacer esto ó si hay que modificar algun parametro en la configuración del manejador ó si existe una solución para este problema. saludos…
Luis A.
Otro detalle. El query es dinamico, y esta asignado en una variable string. cuando lo ejecuto su costo es 0 porque el manejador no lo interpreta como una sentencia Sql, sino como un string.
Entonces el costo de la variable string es 0 y menor al de comparación. Me imagino que por eso no lo manda a multiproceso. No tengo idea de como resolver este problema.
Si tienen alguna posible respuesta o opción se la sabre agradecer Luis A.
Hola Luis. En la configuración del SQL, en procesadores, cuántos tienes para disponible para procesamiento en paralelo? Luis Martin
Moderator
SQL-Server-Performance.com
8 procesadores. Luis A.
Ok. En ese caso SQL Server realiza los procesos de SQL utilizando el paralelismo en forma automática.
Para cada sql que se ejecute dinámico o no, SQL Server genera el mejor plan de ejecución, y es posible que ese plan no incluya el uso de paralelismo.
Es más, en muchos casos estudiados en éste Forum, ha sido mejor dejar un solo procesador para evitar el paralelismo ya que mejora la performance general. Con respecto al sql dinámico que se interpreta como un string, lo que tienes que haces es copiar la sentencia sql solamente al SQL Analyzer (Analizador de Consultas) y alli ver cual es el plan que se utiliza. Por ejemplo: EXEC (‘select * from….’) Esta instrucción pasada al SQL Analyzer no muestra ningún plan por la razón anterior, pero si copias solamente: select * from…. al Analyzer, podrás ver cual es el plan de ejecución Luis Martin
Moderator
SQL-Server-Performance.com
quote:Originally posted by LuisMartin Ok. En ese caso SQL Server realiza los procesos de SQL utilizando el paralelismo en forma automática.
Para cada sql que se ejecute dinámico o no, SQL Server genera el mejor plan de ejecución, y es posible que ese plan no incluya el uso de paralelismo.
Es más, en muchos casos estudiados en éste Forum, ha sido mejor dejar un solo procesador para evitar el paralelismo ya que mejora la performance general. Con respecto al sql dinámico que se interpreta como un string, lo que tienes que haces es copiar la sentencia sql solamente al SQL Analyzer (Analizador de Consultas) y alli ver cual es el plan que se utiliza. Por ejemplo: EXEC (‘select * from….’) Esta instrucción pasada al SQL Analyzer no muestra ningún plan por la razón anterior, pero si copias solamente: select * from…. al Analyzer, podrás ver cual es el plan de ejecución Luis Martin
Moderator
SQL-Server-Performance.com

Luis A.
Lo que dices es cierto, si coloco el codigo del query en el analizador deberia arrojar el costo. El problema es que necesito el query dinamico y la unica forma es almacenarlo en una variable string, que es el otro problema que presenta el manejador al no poder comparar el costo de la variable string que lo que contiene es un query. Al comparar el costo de la variable = 0 con el umbral de configuración no lo coloca multiproceso. No existe manera alguna de colocar alguna instrucción en sql para forzar el multiproceso? Luis A.
Me parece que existe una confusión.
Que el SQL Analyzer no muestre el plan de ejecución cuando el códico está dinámico, no quiere decir que cuando realmente lo ejecute no utilize el mejor plan, contenga o no paralelismo. Qué muestra el plan de ejecución con solamente el códico sin el exec?
Pregunto esto por que no lo alcanzo a entender.
Luis Martin
Moderator
SQL-Server-Performance.com
La pregunta es si alguna forma de forzar el paralelismo en SQL de ejecuciónde una conculta. Luis A.
Ok. Dame un poco de tiempo.
Luis Martin
Moderator
SQL-Server-Performance.com
Luis: No hay forma de forzar a un query cualquiera a usar más procesadores.
Si la configuración está definida para que el paralelismo sea utilizando los 8 procesadores, entonces SQL decide si los utiliza o no. Por el contrario sí se puede limitar el uso de paralelismo para toda instrucción SQL o para alguna en particular.
Luis Martin
Moderator
SQL-Server-Performance.com
]]>