![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() 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.. ![]() Apropocito Que tal esta MySQL server contra FireBird ? no conosco MySQL y me gusta FireBird Pero ustedes comprenderan que estoy desesperado.... Muchas Gracias. |
#2
|
||||
|
||||
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?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
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 |
#4
|
|||
|
|||
Utilizas una trasación para cada inserción o haces todas en la misma transación?
|
#5
|
|||
|
|||
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
|
#6
|
|||
|
|||
¿Inicias la transaccion y la cierras con commint despues de insertar cada registro?. Si no es así pruebalo y verás.
|
#7
|
|||
|
|||
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. |
![]() |
|
|
![]() |
|