Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Aumento desproporcionado del tamaño de las bases de datos en FireBird

Estas en el tema de Aumento desproporcionado del tamaño de las bases de datos en FireBird en el foro de Bases de Datos General en Foros del Web. Estamos desarrollando nuestra aplicación con Delphi XE3 y FireBird 2.5.2. En nuestras bases de datos manejamos codificación ISO8859-1. Hemos detectado que las bases de datos ...
  #1 (permalink)  
Antiguo 11/12/2013, 06:47
 
Fecha de Ingreso: diciembre-2013
Ubicación: Colombia
Mensajes: 4
Antigüedad: 10 años, 11 meses
Puntos: 0
Exclamación Aumento desproporcionado del tamaño de las bases de datos en FireBird

Estamos desarrollando nuestra aplicación con Delphi XE3 y FireBird 2.5.2. En nuestras bases de datos manejamos codificación ISO8859-1.

Hemos detectado que las bases de datos empiezan a aumentar su tamaño de manera exagerada y el acceso a las mismas se vuelve más lento. Cuando las conectamos a un gestos de base de datos como EMS SQL Manager obervamos que al tratar de abrirla se demora demasiado cargando los "Procedures". Al estar abierta y activa tratamos de abrir uno a uno los Procedures y hemos hallado que algunos de ellos no se pueden visuarlizar y generan un error de "Out of Memory" dando a entender que es demasiada la información de éste y que no puede ser mostrada.

Luego de analizar los procedures nos dimos cuenta que si en ellos se incluían vocales con tilde como á, é, í, ó, ú, Á, É, Í, Ó, Ú dentro de los comentarios, dichos caracteres serían reemplazados por otros como el caracter à y este a su vez se volvía a multiplicar miles de veces hasta hacer llegar la base de datos a tamaños de Gigas.

Solicitamos su colaboración para solucionar este problema que está incluso afectando la generación de las copias de seguridad (archivos FBK) y su posterior restauración (archivos FDB).

Última edición por gnzsoloyo; 11/12/2013 a las 09:19 Razón: Tamaño innecesario para la explicación
  #2 (permalink)  
Antiguo 11/12/2013, 09:15
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 8 meses
Puntos: 1146
Respuesta: Aumento desproporcionado del tamaño de las bases de datos en FireBird

tema fuera de lugar, por favor trata de colocar tus temas en el foro adecuado donde te podrán ayudar aquí no viene ni al caso, ya mismo reporto tu tema para que lo muevan.

No soy experto en base de datos pero de entrada tu respuesta es simple y lógica, si todo el alboroto es producido por los comentarios simplemente no los pongan u omitan el uso de caracteres especiales.
  #3 (permalink)  
Antiguo 11/12/2013, 09:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Aumento desproporcionado del tamaño de las bases de datos en FireBird

Cita:
Luego de analizar los procedures nos dimos cuenta que si en ellos se incluían vocales con tilde como á, é, í, ó, ú, Á, É, Í, Ó, Ú dentro de los comentarios, dichos caracteres serían reemplazados por otros como el caracter à y este a su vez se volvía a multiplicar miles de veces hasta hacer llegar la base de datos a tamaños de Gigas.
Esto que describes tiene todo el aspecto de un bug en la aplciación, por cuanto el uso de acentuaciones de cualquier tipo no tiene por qué afectar su almacenamiento, en tanto el caracter haya sido enviado por la aplicación con la collation esperada, de acuerdo a la usada por la base en su conexión.
Antes de echar la culpa a la base o los SP, deberías revisar la programación de la insercion de los datos, ya que el 99% de las veces este tipo de errores comienza allí.
En otras palabras: Si los datos se multiplican al entrar, no es problema en la base, es que los están entrando mal.

¿Con qué lenguaje están trabajando en la aplicación, y cómo han verificado si hay erroes en ella?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 11/12/2013, 10:09
 
Fecha de Ingreso: diciembre-2013
Ubicación: Colombia
Mensajes: 4
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Aumento desproporcionado del tamaño de las bases de datos en FireBird

Gracias por sus respuestas.

Les cuento que el problema podría estar relacionado no en el uso que se hace de la base de datos desde Delphi sinó en procesos propios del motor de base de datos como lo son las copias de seguridad. No hemos podido detectar en que momento exacto se produce la multiplicación de estos caracteres. Lo que nos va marcando la aparición del problema es el tamaño de la base de datos que de un momento a otro comienza a crecer de manera indiscriminada.
  #5 (permalink)  
Antiguo 11/12/2013, 10:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Aumento desproporcionado del tamaño de las bases de datos en FireBird

Cita:
Lo que nos va marcando la aparición del problema es el tamaño de la base de datos que de un momento a otro comienza a crecer de manera indiscriminada.
Eso no es necesariamente un indicativo de que haya un problema en la base o en los stored procedures.
Es indica que hay inserciones de datos incorrectos. Su impacto en el backup puede ser nada más la consecuencia lógica del aumento del tamaño de datos.
Sigo pensando que estás intentnando culpar al síntoma (tamaño de las tablas), en lugar de culpar a la enfermedad (ingreso de datos corruptos).
¿Cómo verificaste que los datos estén llegando correctamente a los procesos? ¿Qué verificaciones ralizaste?
¿Qué comprobaciones hiciste en cuanto a los datos que entran al proceso, respecto a los que salen de él?
Explicalo con detalle.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 11/12/2013, 10:55
 
Fecha de Ingreso: diciembre-2013
Ubicación: Colombia
Mensajes: 4
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Aumento desproporcionado del tamaño de las bases de datos en FireBird

Gracias nuevamente.

Le cuento que el crecimiento de la base de datos no se presenta propiamente en los datos de las tablas sino que el Procedure se llena de caracteres como los que le dije en reemplazo de las vocales con tilde. El caracter extraño se repite miles de veces hasta dañar el Procedure. Es decir hay daño en la MetaData por esta inserción de caracteres extraños. Otro usuario me respondió que simplemente no utilizara caracteres con tilde, obvio, pero la falla se presentará potencialmente con otros usuarios que ya tienen en su poder versiones de nuestras bases de datos que contienen estos caracteres.

A las bases de datos actuales ya se les removió esta clase de caracteres.
  #7 (permalink)  
Antiguo 11/12/2013, 11:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Aumento desproporcionado del tamaño de las bases de datos en FireBird

A ver si entiendo bien, ¿esos caracteres están en el cuerpo del stored procedure, usados en las denominaciones de los identificadores de objetos (nombres de tablas, columnas, etc), y no en lo que son cadenas de texto?
Si ese es el caso, pareces tener un error de configuracion del servidor, porque entonces la tabla donde se almacena el cuerpo del código, no está soportando ese tipo de colllation, y eso está un poquitín más allá de lo que pudes solicionar así nomás.
Ese tipo de comportamiento lo he visto suceder en otros DBMS, aunque no genera en esos caoss una corrupción tan grande. Normalmente sólo alcanza a un caracter, ya que lo convierte en dos.
Como sea, es cierto que si usaron letras acentuadas en los nombres de los objetos, han metido la pata a lo grande, porque eso se considera una pésima práctica, por cuestiones de compatibilidad entre servidores. La mejor de todas las soluciones es modificar todas esas apariciones acentuadas, para eliminaras.
Lo siento, pero es muy posible que les convenga tomar el toro por las astas y resolverlo como un bug de producción.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 11/12/2013, 13:18
 
Fecha de Ingreso: diciembre-2013
Ubicación: Colombia
Mensajes: 4
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Aumento desproporcionado del tamaño de las bases de datos en FireBird

Claro que ya vas entendiendo. El problema lo detectamos en los fragmentos que sirven como comentario dentro de los Procedures. No en nombres de objetos. Inclusive las descripciones de los objetos también las removimos por la misma causa. Observe por favor un fragmento del Procedure donde le muestro el caracter que se multiplica (sÃ-). El cual realmente debía ser una "i con tilde" para formar (sí-). De hecho otros caracteres se reemplazan por otras secuencias de caracteres raros.

Código FIREBIRD:
Ver original
  1. /*Primero se busca el dato con todos la informacion que entra por parametros*/  
  2.   if ((IEmp<>0) OR (aIPerfil<>'N/A') OR (IUsuario<>'N/A') OR (IWS<>'N/A') OR (ITDSop<>0))  
  3.   then begin  
  4.     SELECT SVALUE  
  5.     FROM abaconfigusuario  
  6.     WHERE (IEmp=:IEmp) AND (IPerfil=:aIPerfil) AND (NUsr=:IUsuario) AND (IWS=:IWS) AND  
  7.        (NTabla=:NTabla) AND (NSTabla=:NSTabla) AND (ITDSop=:ITDSop) AND  
  8.        (NField=:NField)  
  9.     INTO :SValue;  
  10.  
  11. /*Si fue dado el IWS y el valor no se ha encontrado, se busca con todos los datos igual pero  
  12.   sin el IWS solamente. Con esto se da la posibilidad de tener una configuracion sin IWS pero  
  13.   sÃ- con ITDSop. Antes, llegaba directo a los llamados recursivos y empezaba quitando el ITDSop  
  14.   por lo que nunca encontraba una configuracion en ese caso.*/  
  15.     if ((IWS<>'N/A') and (SValue IS NULL)) then begin  
  16.        SELECT SVALUE  
  17.        FROM abaconfigusuario  
  18.        WHERE (IEmp=:IEmp) AND (IPerfil=:aIPerfil) AND (NUsr=:IUsuario) AND (IWS='N/A') AND  
  19.           (NTabla=:NTabla) AND (NSTabla=:NSTabla) AND (ITDSop=:ITDSop) AND  
  20.           (NField=:NField)  
  21.        INTO :SValue;  
  22.          
  23.        if (NOT SValue IS NULL) then IWS='N/A';  
  24.     end  
  25.   end

Última edición por insoft; 11/12/2013 a las 13:22 Razón: Corrección del problema

Etiquetas: delphi, firebird, soporte-y-sugerencias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:39.