Recompilacion a nivel de sentencia en SQL Server 2005

Con la llegada de SQL Server 2005 hemos podido ver muchas mejoras y grandes cambios beneficiosos para developers y DBAs. Uno de estos grandes cambios es la manera en que las consultas son compiladas. En este post vamos hablar especificamente acerca de la recompilación a nivel de sentencia, una nueva característica introducida en SQL Server 2005. Todo empezo en SQL Server 2000 con una gran mejora en su arquitectura de consulta manejando dos planes: un plan de compilación (estructura de data de solamente lectura usado por cualquier número de usuarios, y que no existe más que dos copias, una copia para ejecuciones en serie y otra para ejecuciones paralelas), y un plan de ejecución que crea una estructura de data para cada usuario que actualmente esté ejecutando la consulta.

Hasta aquí todo bien, ya que esta arquitectura es beneficiosa cuando se trabaja con stored procedures, funciones, consultas dinámicas, etc, sin embargo, hay un problema común cuando se trabaja con stored procedures. Este problema es la necesidad de recompilación de todo el stored procedure luego haberse realizados pequeños cambios en el esquema y algunas opciones SET. La cuestión es que una vez realizado los cambios por más mínimo que sea, esto llevará consigo, como ya dije, una recompilación completa de todo el procedimiento almacenado, y peor aún si el stored procedure es grande, lo cual era muy costoso; este tipo de recompilación a nivel de módulo sucede en SQL Server 2000. En SQL Server 2005 ya no pasa lo mismo gracias a la nueva característica denominada recompilación a nivel de sentencia (Statement-Level Recompile), es decir, después de realizar cambios, ya sea a nivel de esquema o a nivel de opciones SET sólo se recompilará las sentencias modificadas.

Un artículo interesante al respecto es Statement-Level Recompile donde se detalla con algunos ejemplos.

Percy Reyes.

Published 14/4/2007 21:27 por Percy Reyes
Comparte este post:
http://geeks.ms/blogs/ozonicco/archive/2007/04/14/recompilacion-a-nivel-de-sentencia-en-sql-server-2005.aspx