Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-09-2005
Abel Garcia Abel Garcia is offline
Miembro
 
Registrado: nov 2004
Posts: 45
Poder: 0
Abel Garcia Va por buen camino
Exclamation HELPME Incremento en el Uso del CPU FireBird

Hola a todos.
Estoy utilizando FireBird 1.5 y tengo el siguiente Problema:

Tango una aplicacion la cual hace uso de una tabla Con n campos.
Esta apliaccion la funcion que tiene es la de Almacenar los eventos sucedidos en dicha tabla YA saben Timepo del suceso Nombres Etc.
Para poder probar la efectividad del almacenado de cada suceso y poder obervar lo que sucede con el manejo del archivo fisico en cuestion del tamaño Etc.
Intente que la propia aplicacion generara un evento cada 1 Seg y asi en su tiempo escribiera los eventos en dicha tabla, Para esto el problema es que cuando comienza escribiendo los eventos el uso del cpu es casi nulo, pero conforme pasa el tiempo el uso del cpu se va incrementando, como si el servidor de Firebird tardase mas y mas cada que pasa el tiempo. en aprox una hora el uso del Cpu es casi del 100 % en tansolo añadir un registro mas, Pareseria que el problema esta en mi apliacion por lo cual cerrando la aplicacion y volviendo a comenzar deberia restableser el uso del CPU al porcentaje inicial y volver a incrementar conforme pasa el tiempo, pero esto no es asi, Si cuando cerre la aplicacion el uso del cpu estaba por un valor como 70 % y corro la aplicacion vuelve a usar el CPU casi al mismo nivel de 70 % y conforme pasa el tiempo lo incremeta a partir de ese punto.
Despues de esto intente realizar un Backup de la Base de datos y despues un restore eliminando la pasada "LENTA BASE DE DATOS (VAMOS EL ARCHIVO GDB)" y vuelvo a correr la aplicacion y Voala el uso del CPU vuelve a comenzar en digamos un 5 % pero conforme pasa el tiempo vuelvo al mismo lugar, ya intente lo mismo con Interbase y pasa lo mismo, no logro mantener el uso del CPU constanate QUE PASA....

En la base de datos para la insercion de un registro uso un Procedimieto
Estoy tambien usando los IB de Borland y algo que pudiera ser el causante tavez es que tengo un procedimiento que cuando anexo un registro a la tabla
de los eventos checa su medida y elimina los registros mas antiguos para limitar la medida de la base de datos. Este procedimiento lo ejecuto en la base de datos cada vez que intento anexar un registro, por medio de algunas herramientas he sensado que este procedimiento no es el que tarda cada vez mas y mas sino que el procedimiento que se va tardando cada vez mas es la insercion..

huy una expliacion bastante larga, espero no ser aburrido y talvez esto le sirva a alguien mas que tenga un problemas similar. y bueno si alguien pudiera ayudarme se lo agradeceria mucho ya casi estoy agotando mis ultimos recursos talvez sea algo facil.

Apropocito Que tal esta MySQL server contra FireBird ?
no conosco MySQL y me gusta FireBird Pero ustedes comprenderan que estoy desesperado....
Muchas Gracias.
Responder Con Cita
  #2  
Antiguo 22-09-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo entender que al insertar un registro generas un registro del evento generado?, entonces al insertar el registro del evento generado volverás a insertar otro registro con el registro del evento generado... es un bucle sin fin, ¿o no lo he entendido bien?
Responder Con Cita
  #3  
Antiguo 22-09-2005
Avatar de Rufus
Rufus Rufus is offline
Miembro
 
Registrado: may 2004
Ubicación: Canarias
Posts: 193
Poder: 20
Rufus Va por buen camino
Bueno, podríamos ir por partes. En primer lugar, si el sistema es windows te recomiendo que cambies la extensión del archivo de .GDB a otra, por ejempo .FDB. Aunque esto no solucione el problema es muy recomendable hacerlo de todas maneras.

Hazlo y nos cuentas.
__________________
Milo
Responder Con Cita
  #4  
Antiguo 22-09-2005
felixgo felixgo is offline
Miembro
 
Registrado: may 2003
Posts: 86
Poder: 21
felixgo Va por buen camino
Utilizas una trasación para cada inserción o haces todas en la misma transación?
Responder Con Cita
  #5  
Antiguo 22-09-2005
AdrianD AdrianD is offline
Miembro
 
Registrado: may 2003
Ubicación: San Juan - Argentina
Posts: 113
Poder: 21
AdrianD Va por buen camino
En la transaccion trabajas con commit o commitretaining, este ultimo va consuminedo recursos del sistema, luego si insertas varios registros en un periodo corto de tiempo, te vas quedando sin recursos
Responder Con Cita
  #6  
Antiguo 22-09-2005
ferysil2003 ferysil2003 is offline
Miembro
 
Registrado: abr 2004
Posts: 26
Poder: 0
ferysil2003 Va por buen camino
¿Inicias la transaccion y la cierras con commint despues de insertar cada registro?. Si no es así pruebalo y verás.
Responder Con Cita
  #7  
Antiguo 22-09-2005
Abel Garcia Abel Garcia is offline
Miembro
 
Registrado: nov 2004
Posts: 45
Poder: 0
Abel Garcia Va por buen camino
Asi es Inicio Transaccion y Termino Con Comit Despues de Cada insercion de un registro, Ademas lo tengo encerrado en un blucle Try __finally Para detectar
Cualquier error, Cada escritura la estoy Verificando con un Trace Debuger a nivel de windows.

Si utilizo Windows.

La idea es Cada Segundo Inserto un registro, tomando encuenta que en la pila de insercion de registro a la Base de Datos nunca Se encremente de tal forma
Que cada Transaccion iniciada sea cada vez mas grande o con mas Registros a insertar
Por lo general Cada Segundo inicio una Transaccion y entonces escribo a la base de datos todos los registro en la pila de memoria en ese momento.
Por lo general Cada Segundo Inicio una transaccion con digamos unos 2 a tres registros cuando acaba de iniciar la aplicacion generadora.
El problema es que conforme pasa el tiempo, la escritura de cada registro le cuesta mas y cada vez se tarda mas en la transaccion, terminando con utilizar todo el CPU.
en casi aproximadamente una hora, Cuando ya paso un tiempo de casi 25 min desde el inicio los mismos Tres registros que al principo se tardava unos 2 mls a los 25 min ya se tarda como 100 mls y asi sucesivamente...
Como la ven Que cren que este pasando.


Gracias por su ayuda.

Para todo esto solo es una aplicacion la que se encuentra generando este eveto.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:40:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi