Sp en Cache

26/10/2006 - 16:16 por Eduardo De Luca | Informe spam
Hola como están . Tengo un sp que la primera ves que se ejecuta tarda
alrededor de 10 segundos , luego en corridas sucesivas , no tarda mas de 1
segundo. Lo que yo necesito hacer es mantenerlo explícitamente siempre en
cache este SP, porque cuando no se usa por un tiempo la aplicación, el
rendimiento vuelve a decaer (en 10 seg) y necesito tener el set de datos con
alta disponibilidad (rendimiento de 1 seg).



Me podrian indicar como hacerlo , si es que es posible.



Muchas Gracias

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
26/10/2006 - 17:56 | Informe spam
Eduardo,

Eso depende del uso que se le de al sp, del costo de generar el plan
compilado, de cuanta memoria se tiene y cuanta necesita SQL Server en el
buffer de data. SQL Server usa un proceso llamado "lazywriter" que cada
cierto tiempo recorre el cache de procedimientos y decrementa el campo [edad]
de cada plan por 1. Si el plan es referenciado nuevamente, entonces este
campo es incrementado en una cantidad igual al costo de generar su plan
compilado. Como te puedes inmaginar, si un plan no es referenciado desde
ninguna conexion o si su [edad] alcanza el valor cero o si SQL Server
necesita tomar memoria desde el cache de procedimientos para darcela al
buffer de data, entonces este plan es sacado.

No existe una manera explicita de decirle a SQL Server que deje un plan en
memoria aunque este no sea usado.

Que es lo que hace este sp, crees que pudieras mejorar el rendimineto de
la(s) sentencia(s) que este usa?


AMB


"Eduardo De Luca" wrote:

Hola como están . Tengo un sp que la primera ves que se ejecuta tarda
alrededor de 10 segundos , luego en corridas sucesivas , no tarda mas de 1
segundo. Lo que yo necesito hacer es mantenerlo explícitamente siempre en
cache este SP, porque cuando no se usa por un tiempo la aplicación, el
rendimiento vuelve a decaer (en 10 seg) y necesito tener el set de datos con
alta disponibilidad (rendimiento de 1 seg).



Me podrian indicar como hacerlo , si es que es posible.



Muchas Gracias



Respuesta Responder a este mensaje
#2 Eduardo De Luca
26/10/2006 - 20:34 | Informe spam
Gracias por tu ayuda , como siempre de primera. En cuanto a optimizar la
consulta , la misma es bastante compleja ,pero no usa cursores ni
subconsultas , además la misma hace uso de índices de manera optima .

El problema es la primera ves que se ejecuta , luego no . Por eso se me
había ocurrido la posibilidad de ingresarla en cache .

Gracias por tu ayuda

"Alejandro Mesa" escribió en el
mensaje news:
Eduardo,

Eso depende del uso que se le de al sp, del costo de generar el plan
compilado, de cuanta memoria se tiene y cuanta necesita SQL Server en el
buffer de data. SQL Server usa un proceso llamado "lazywriter" que cada
cierto tiempo recorre el cache de procedimientos y decrementa el campo
[edad]
de cada plan por 1. Si el plan es referenciado nuevamente, entonces este
campo es incrementado en una cantidad igual al costo de generar su plan
compilado. Como te puedes inmaginar, si un plan no es referenciado desde
ninguna conexion o si su [edad] alcanza el valor cero o si SQL Server
necesita tomar memoria desde el cache de procedimientos para darcela al
buffer de data, entonces este plan es sacado.

No existe una manera explicita de decirle a SQL Server que deje un plan en
memoria aunque este no sea usado.

Que es lo que hace este sp, crees que pudieras mejorar el rendimineto de
la(s) sentencia(s) que este usa?


AMB


"Eduardo De Luca" wrote:

Hola como están . Tengo un sp que la primera ves que se ejecuta tarda
alrededor de 10 segundos , luego en corridas sucesivas , no tarda mas de
1
segundo. Lo que yo necesito hacer es mantenerlo explícitamente siempre en
cache este SP, porque cuando no se usa por un tiempo la aplicación, el
rendimiento vuelve a decaer (en 10 seg) y necesito tener el set de datos
con
alta disponibilidad (rendimiento de 1 seg).



Me podrian indicar como hacerlo , si es que es posible.



Muchas Gracias



Respuesta Responder a este mensaje
#3 Manuel Etcheto
26/10/2006 - 22:42 | Informe spam
Disculpa, pero me parece que tu problema no es de SQL Server, si no la
Aplicación que compila la primera vez que se ejecuta luego de un período de
inactividad.
¿por casualidad no es una asp.net?

Salu2
Manuel


"Eduardo De Luca" escribió en el mensaje
news:eIP$X1S%
Gracias por tu ayuda , como siempre de primera. En cuanto a optimizar la
consulta , la misma es bastante compleja ,pero no usa cursores ni
subconsultas , además la misma hace uso de índices de manera optima .

El problema es la primera ves que se ejecuta , luego no . Por eso se me
había ocurrido la posibilidad de ingresarla en cache .

Gracias por tu ayuda

"Alejandro Mesa" escribió en el
mensaje news:
Eduardo,

Eso depende del uso que se le de al sp, del costo de generar el plan
compilado, de cuanta memoria se tiene y cuanta necesita SQL Server en el
buffer de data. SQL Server usa un proceso llamado "lazywriter" que cada
cierto tiempo recorre el cache de procedimientos y decrementa el campo
[edad]
de cada plan por 1. Si el plan es referenciado nuevamente, entonces este
campo es incrementado en una cantidad igual al costo de generar su plan
compilado. Como te puedes inmaginar, si un plan no es referenciado desde
ninguna conexion o si su [edad] alcanza el valor cero o si SQL Server
necesita tomar memoria desde el cache de procedimientos para darcela al
buffer de data, entonces este plan es sacado.

No existe una manera explicita de decirle a SQL Server que deje un plan
en
memoria aunque este no sea usado.

Que es lo que hace este sp, crees que pudieras mejorar el rendimineto de
la(s) sentencia(s) que este usa?


AMB


"Eduardo De Luca" wrote:

Hola como están . Tengo un sp que la primera ves que se ejecuta tarda
alrededor de 10 segundos , luego en corridas sucesivas , no tarda mas de
1
segundo. Lo que yo necesito hacer es mantenerlo explícitamente siempre
en
cache este SP, porque cuando no se usa por un tiempo la aplicación, el
rendimiento vuelve a decaer (en 10 seg) y necesito tener el set de datos
con
alta disponibilidad (rendimiento de 1 seg).



Me podrian indicar como hacerlo , si es que es posible.



Muchas Gracias









email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida