PDA

Ver la Versión Completa : Preocupado por la capacidad de los SPs


mlara
05-07-2003, 04:51:41
Hola.

Al igual que ALMERA estoy preocupado por la capacidad de los procedimientos almacenados (SPs). Estoy trabajando en un proyecto grande, y no por esto, en particular, trabajo en un SP algo extenso (es un buen diseño bien estructurado) que estoy migrando. ALMERA trabaja en FireBird 1.5. Yo trabajo en InterBase 7.

Bueno, ya preocupado porque el tiempo apremia, las preguntas que tengo son las siguientes:

1. Definitivamente hay límite de capacidad cuando se trabaja con SPs?

2. Dónde encuentro esa información?

y por último,

3. en una de las respuestas que le dan a ALMERA hablan de código BLR, que entiendo como una especie de código precompilado. Si estoy trabajando en InterBase 7 con IBConsole, registrando mis procedimientos en una base de datos, ese código BLR se embebe o se incrusta en el archivo de base de datos GDB?

mlara
05-07-2003, 04:58:00
Se me olvido decir que al igual que a ALMERA obtengo un mensaje de error al ejecutar el SP, aunque cabe aclarar que en la tabla donde el SP arroja los resultados indica que todo se proceso como debía. Lo que quiero decir es que ejecuto el SP desde IBConsole y me arroja el error, pero cuando veo la tabla de resultados ahí están todos.

El mensaje de IBConsole es:

Unknow Error: Can´t retrieve plan.

Luego, cuando le quito líneas al SP, el error ya no sale.

El SP tiene 29 KB en archivo texto.

kinobi
05-07-2003, 10:28:17
Hola,

Posteado originalmente por mlara
1. Definitivamente hay límite de capacidad cuando se trabaja con SPs?
Sí, existe un límite máximo de 48 Kb de código BLR por procedimiento. No existe una correspondencia directa con código fuente. Es decir, tus 29 Kb de código fuente pueden dar lugar a más de 48 Kb de BLR, depende del tipo de sentencias SQL y variables que estés utilizando dentro del procedimiento.

Posteado originalmente por mlara
2. Dónde encuentro esa información?
En la documentación (en mi caso en la de la versión IB 6.0), volumen "Operations Guide", capítulo "Introduction", "Primary InterBase Features":

"Maximum stored procedure for trigger code size: 48Kb of BLR, the bytecode language compiled from stored procedure or trigger language".

Como tu versión es la 7, localiza esta misma información en tu documentación por si pudiese haber variado, aunque lo dudo.

Posteado originalmente por mlara
3. en una de las respuestas que le dan a ALMERA hablan de código BLR, que entiendo como una especie de código precompilado. Si estoy trabajando en InterBase 7 con IBConsole, registrando mis procedimientos en una base de datos, ese código BLR se embebe o se incrusta en el archivo de base de datos GDB?
El propio servidor almacena el BLR (*) junto con el código fuente en la tabla del sistema RDB$PROCEDURES, concretamente en la columna: RDB$PROCEDURE_BLR.

(*) La generación del BLR se produce en el mismo momento que se modifican (CREATE PRODEDURE, ALTER PROCEDURE) los metadatos del procedimiento.

Saludos.

guillotmarc
05-07-2003, 15:20:53
Hola.

Sobre el error :

Unknow Error: Can´t retrieve plan.

Te está indicando que no puede recuperar el plan de ejecución del procedimiento almacenado. Este plan de ejecución te indica los índices que se van a utilizar para accelerar su ejecución.

Tiene todo el aspecto que el error se da en el propio IBConsole (no puede recuperar esa información), y no en Interbase (por eso finaliza correctamente el procedimiento almacenando, realizando los cambios esperados en los registros).

Probablemente si actualizas tu versión de IBConsole, se solucione el problema.

Personalmente no utilizo IBConsole, sinó IB-Expert. La versión Personal http://www.hksoftware.net/download/ibep_2.5.0.47_full.exe es totalmente gratuita y muy buena. Posteriormente puedes adquirir la versión comercial con caracteristicas avanzadas como un depurador de procedimientos almacenados, ...

Saludos.