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 17-07-2007
mensana mensana is offline
Miembro
 
Registrado: sep 2006
Posts: 69
Poder: 18
mensana Va por buen camino
Bueno ... más que "pendientes" son transacciones que han dejado registros que ya no son válidos pero por "lo que sea" no se han podido eliminar con un sweep
Responder Con Cita
  #2  
Antiguo 18-07-2007
tefots tefots is offline
Miembro
 
Registrado: feb 2005
Posts: 108
Poder: 20
tefots Va por buen camino
voy a probar con el performance monitor ese.
pero he revisado la aplicación , y no hay nada 'raro' , tan solo hago

try
query1.execsql
Query1.transaction.commitretaining;
Except
queyr1.transaction.rollbackretainig;
end;

y los querys son simplemente updates.
deberia hacer commit , en vez de commitretaining ?.
por eso no hace sweeep automaticamente ?.
la base de datos no tiene triggers ni procedimientos almacenados , simplemente tablas con sus primarykeys e indices.

he probado ha forzar hacerler un sweep , y nada , las transacciones siguen estando ahi pendientes .
el verdadero problema de todo esto , es que ademas de que la bd crece y crece , llega un momento que debe tener tantas transacciones por ahi perdidas que que la bd se espatarra , y el fbserver se pone al 100%.

saludos.

Última edición por tefots fecha: 18-07-2007 a las 09:52:23.
Responder Con Cita
  #3  
Antiguo 18-07-2007
mensana mensana is offline
Miembro
 
Registrado: sep 2006
Posts: 69
Poder: 18
mensana Va por buen camino
Cita:
Empezado por tefots
... tan solo hago

Código Delphi [-]
try
 query1.execsql
 Query1.transaction.commitretaining; 
Except
 queyr1.transaction.rollbackretainig;
end;

deberia hacer commit , en vez de commitretaining ?.
commitretaining !! Ahí tienes el problema, haces un commit y retienes (continuas) la transacción. Debes hacer un commit/rollback normal
Responder Con Cita
  #4  
Antiguo 18-07-2007
tefots tefots is offline
Miembro
 
Registrado: feb 2005
Posts: 108
Poder: 20
tefots Va por buen camino
Cita:
Empezado por mensana
commitretaining !! Ahí tienes el problema, haces un commit y retienes (continuas) la transacción. Debes hacer un commit/rollback normal
yo pensaba que commitretaining hacia lo mismo que el commit solo que finalizaba y retenia la misma transacción (evitando tener que abrir una nueva ) y que no afectaba negativamente a la base de datos.

Entonces el commitretaining /rollbackretaning no es bueno usarlo para ciertas cosas , sobre todo si se está usando la misma transaccion y realizando commitsretainings masivamente sobre esa transaccion.

gracias y un saludo
Responder Con Cita
  #5  
Antiguo 18-07-2007
mensana mensana is offline
Miembro
 
Registrado: sep 2006
Posts: 69
Poder: 18
mensana Va por buen camino
Básicamente el CommitRetaining sirve para una multi-transacción con varios "puntos de control" (checkpoint), pero siempre hay que finalizar con un commit normal.

En pseudo-código:

IniciarTransacción

try

Cambios en BBDD
CommitRetain (punto 1) // Los cambios son válidos en la BBDD

Cambios en BBDD
CommitRetain (punto 2) // Los cambios son válidos en la BBDD

... etc ...

Commit // Último commit

except
Rollback
Responder Con Cita
  #6  
Antiguo 18-07-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
resp

Eso del CommitRetaining hay que usarlo con mucho cuidado ay que puede darte mas dolores de cabesas de lso que se iamginan.

Volviendo la tema del tamaño de la bd. Segun mencionastes haces muchas actualizaciones y pocas consultas segun veo es poco lo que sirves(los datos que se consultan) de ser asi pon un tamaño muy pequeño a la paginacion. de esta manera no se mantiene datos en memoria y la base de datos va ser mas pequeña con siderablemente.

La cosa es mas compleja que lo que te acabo de decir.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #7  
Antiguo 09-04-2008
Rolopy Rolopy is offline
Registrado
 
Registrado: feb 2008
Posts: 1
Poder: 0
Rolopy Va por buen camino
Thumbs up

Buenas Tardes, un saludo desde Asunción del Paraguay....bueno navegando por elclubdelphi, encontre este hilo y me parecio interesante ya que en estos momentos estoy teniendo el mismo inconveniente, usando procedimientos almacenados en firebird 1.5 a la hora de hacer la llamada desde mi aplicativo ( delphi 7 + Zeos 6.62)....al procedimiento de actualización, la base de datos va incrementandose constantemente , cada vez que es llamado el procedimiento.

Se me ocurrio que algun garbage colector que use la base de datos no este eliminnando los residuos de datos o transacciones y por ello cada vez que se ejecuta el proc. crece mi base de datos.

No hay alguna forma de decirle explicita o implicitamente al motor para eliminar dichos residuos si asi fuese el caso?.

Desde ya muchas gracias por su atención.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como hacer que un tmediaplayer se reproduzca sin parar Jan_polero OOP 15 10-10-2007 00:40:56
Mi base de datos crece sin motivo aog Firebird e Interbase 5 12-02-2007 17:55:39
SQL UPDATE entre 2 tablas de Diferente base de datos Luis Alberto SQL 1 11-11-2005 04:52:18
Problema al hacer un update en una tabla con datos de otra Iseberiano SQL 3 08-06-2005 12:32:14
Update de base de datos brandolin Firebird e Interbase 8 01-03-2005 23:45:48


La franja horaria es GMT +2. Ahora son las 15:06:12.


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