2010-11-24 15 views
5

A menudo escuché a la gente decir que los procedimientos almacenados están precompilados. Qué significa eso?¿Cuál es el significado de "procedimientos almacenados precompilados"?

En realidad, escribimos las consultas en el proceso almacenado y luego compilamos. Si hay algún error sintáctico, se queja. Entonces, si ese es el caso, entonces la compilación está sucediendo en ese momento.

Entonces, ¿a qué se refiere "Pre"?

+0

En realidad es "precompilado". Es el participio pasado del verbo "compilar". – thomaspaulb

Respuesta

4

en realidad son pre-analizadas y sintaxis/semántica comprobarse en CREATE y ALTER

"Compilación" a un plan de consulta que sucede en la demanda

Para una visión general de compilación y re-uso, ver "Batch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005 "

La terminología (en lo que quiere decir) se remonta al SQL Server 6.5. La "nueva" forma resaltada en el enlace del libro blanco anterior comenzó con SQL Server 7.0

+0

Señor, usted dijo pre-analizado. ¿Qué es pre aquí? Soy muy nuevo en este campo. entonces mi pregunta puede sonar muy tonta. Pero enséñame ... quiero aprender –

+0

Verificar el CREATE/ALTER es diferente a generar el plan. La sintaxis, etc. se comprueba en CREAR/ALTERAR. En este punto, el proceso almacenado no se compila. Por favor, mira mi udate con el 2do enlace sobre dónde viene "pre compilado" del – gbn

1

En Microsoft SQL Server, los procedimientos almacenados se compilan en un plan de consulta la primera vez que se ejecutan.

En ejecuciones posteriores, a veces se recompilan desde el origen, pero no siempre. Es por eso que se llaman "precompilados".

A menos que especifique que siempre deben recompilarse, o cuando ejecuta sp_recompile para forzar la compilación en el siguiente tiempo de ejecución.

+0

Eso significa que nunca son pre compilados ... Porque "los procedimientos almacenados se compilan en un plan de consulta la primera vez que se ejecutan" me da la impresión de que en el momento mismo primera vez cuando escribimos nuestra primera consulta, solo esa vez solo el plan de consulta queda atrapado. Y a partir de la próxima vez, cuando hagamos la modificación de out sp, la recopilación se realizará en función del plan de consulta ... ¡corrígeme si estoy equivocado! –

+0

Es cierto que nunca se vuelven a compilar después de ejecutar 'ALTER PROC', por lo que no es técnicamente una compilación previa. Pero hasta donde sé, siempre se vuelven a compilar en el primer 'EXEC' después de 'ALTER PROC'. Un plan de consulta en caché solo se usa cuando no ha habido 'ALTER' y no se ha utilizado ninguna otra opción para forzar la recompilación. – thomaspaulb

+0

Vea también: http://stackoverflow.com/questions/1048572/how-to-precompile-stored-procedures-in-sql-server – thomaspaulb

1

El contenido sql del proc almacenado no se analizará si lo ejecuta. El análisis sintáctico sql puede llevar mucho tiempo.

Cuestiones relacionadas