Subject Re: Update take hours to delete records :(
Author nathanelrick
not bad idea ! i will try like this to see .... because for now it's a disaster :( but i m also afraid the the garbage is also in something that explain the slow :(



--- In firebird-support@yahoogroups.com, vince.duggan@... wrote:
>
> Hi,
>
> I see from other emails that you have had a few discussions on various
> combinations of isc_tpb_write + isc_tpb_read_committed +
> > isc_tpb_no_rec_version + isc_tpb_wait and so on. I suppose you have your
> reasons for using non-default transaction modes. (i.e. not simple
> concurrency).
>
> Having said that, when I need to delete a large amount of rows (typically
> after having archived them to another database) I always do it via a
> stored procedure, where I have control. I also always use normal
> concurrency transactions:
>
> Create procedure Delete_my_rows
> as
> declare variable dbkey char(8);
> begin
>
> for select rdb$db_key
> from mytable
> where some condition
> into :dbkey do
> begin
> delete from mytable where rdb$db_key = :dbkey;
>
> when any do
> begin
> /* either nothing, or log to another table*/
> end
> end
>
> end;
>
>
>
> In this way, if a row is locked or we are waiting for a transaction to
> finish (because you are using isc_tcb_wait), we can simply carry on and
> any locked rows will be deleted next time we run.
>
>
>
> Regards
>
> Vince
>
>
>
> Vince Duggan
> I.T. Architect
> Virgin Active South Africa (Pty) Ltd
> Tel (+27) (0)21 684 3525
> Fax (+27) (0)21 684 3225
> Cell (+27) (0)82 747 6127
> Email: vince.duggan@...
>
> Live happily ever active
>
>
>
> firebird-support@yahoogroups.com wrote on 2012/02/28 05:03:59 PM:
>
> > [image removed]
> >
> > [firebird-support] Update take hours to delete records :(
> >
> > nathanelrick
> >
> > to:
> >
> > firebird-support
> >
> > 2012/02/28 05:04 PM
> >
> > Sent by:
> >
> > firebird-support@yahoogroups.com
> >
> > Please respond to firebird-support
> >
> >
> > Hello,
> >
> > I have a table that i use to store session
> >
> > Table Session
> > ID: VARCHAR(16); /* GUID ID */
> > Expiry_date: Timestamp;
> > Data: Varchar(1000);
> >
> > i use the table like this only :
> >
> > Insert into Session(ID,Expiry_date,Data)
> > VALUES (CHAR_TO_UUID(NewGUID), NOW + 15minutes,...)
> >
> > Update Session Set
> > data=...
> > Expiry_date= NOW + 15minutes
> > where
> > id=... and
> > Date_expired < 'NOW'
> >
> > Select ... from SESSION where
> > ID=... and Expiry_date > 'NOW'
> >
> > THat ok,
> >
> > now the probleme is that i have another thread that one time a day
> > delete all the expired node
> >
> > Delete From SESSION where Expiry_date < NOW - 3 days
> >
> > i use isc_tpb_write + isc_tpb_read_committed +
> > isc_tpb_no_rec_version + isc_tpb_wait for this second thread (but
> > normally as i delete the rec that expire 3 days ago they must not be
> > any probleme of deadlock)
> >
> > but the probleme is that this SQL make hours (days?) to return :(
> > if i replace the isc_tpb_wait by isc_tpb_nowait then i have often
> > some deadlock (why ?? still not understand ...)
>
> >
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
>
>
> [Non-text portions of this message have been removed]
>