Uno de los parámetros que usualmente se modifica en SQL Server es el MAXDOP o Maximum Degree of Paralelism, este indica a SQL Server la cantidad de máxima de CPUs que pueden utilizarse en una tarea. Por ejemplo si una consulta puede dividirse en varios subconsultas entonces se puede asignar un CPU distinto a cada una de estas consultas.

Según Rod College* en un sistema OLTP con muchas transacciones cortas se necesitan muchos CPUs que atiendan muchas tareas de usuarios de forma simultánea, lo contrario a un sistema OLAP donde se requiere que múltiples CPUs atiendan a una única consulta que se puede ser dividida en muchas subconsultas pequeñas.

Por defecto MAXDOP es certo, o sea, que SQL Server decide la cantidad de procesadores a utilizar, puede ser 1 entonces se deshabilita el paralelismo o un número fijo que determine la cantidad máxima de CPUs a utilizar. Un heurístico utilizado es que en sistemas OLTP el valor de MAXDOP debe ser 8 aunque el servidor tenga más procesadores ya que el costo de dividir la consulta en más de 8 partes puede comprometer el beneficio del paralelismo.

Rob también recomienda que si se utiliza MAX_DOP = 1 a nivel de servidor se afecta la creación de índices que se beneficia del paralelismo para esto se debe evitar el MAX_DOP de la siguiente forma:

 

— Uso del MAXDOP hint para eludir el MAXDOP del servidor

CREATE NONCLUSTERED INDEX [IXA]

ON [SchemaX].[TableX] ([ColumnX] ASC)

WITH (MAXDOP=0)

GO

 

Saludos,

Eduardo Castro – Microsoft SQL Server

http://comunidadwindows.org

Costa Rica

LiveJournal Tags: ,
Technorati Tags:

*¨http://www.sql-server-performance.com/articles/per/maximum_degree_parallelism_p1.aspx