Subject | Re: [firebird-support] Re: GBAK hangs with GC |
---|---|
Author | Helen Borrie |
Post date | 2006-09-17T23:09:12Z |
At 05:00 AM 18/09/2006, you wrote:
it is performing GC on every table it reads. And it is as designed.
different approach to backing up. However, I'm not suggesting this
is the "solution" to your "problem". As I commented earlier, if you
are doing massive deletes, the GC chicken has to come to roost somewhere.
user transaction to hit the table after the deletes will trigger off the GC.
table, then dropping and recreating the table would be the
recommended way. Dropped tables don't leave garbage. If not, then
possibly performing the deletes in a string of transactions, rather
than in one huge one, would (potentially, at least) release the
record stubs for regular GC to handle.
bolted? I'd be more concerned to discover why the delete operation
corrupted the database, and ensure that I'd fixed that.
./heLen
> > Nothing has changed. Gbak still does GC unless you tell it not to.It doesn't hang. It just takes a long time to get to the point, when
>
>OK. No problem.
>But is the hanging of gbak with GC considered a bug?
it is performing GC on every table it reads. And it is as designed.
>And if so, is anyone working on this issue?Fb 2.0 has a new backup facility called NBackup, which provides a
different approach to backing up. However, I'm not suggesting this
is the "solution" to your "problem". As I commented earlier, if you
are doing massive deletes, the GC chicken has to come to roost somewhere.
>It's fairly well explained in the Fb 2.0 release notes.
> > Fb 2.0 *does* make cooperative GC available to Superserver, which
> > might help you to plan your post-delete cleanups a bit more
> > easily. But you do have to get rid of the garbage by some means.
>
>Could you please explain "cooperative GC"?
>And is it already available in FB 1.5 classic?Yes; it is the *only* way Classic does GC. Broadly put, the first
user transaction to hit the table after the deletes will trigger off the GC.
> > To turn that around - if you are planning to restore the DB afterIt depends. If the intention is to delete *all* records in the
> > backing it up, don't do GC in the backup! Disable GC using the -g
>switch.
>
>Sounds... uh... strange.
>What's a backup's use if never being restored ;-)
>
>But seriously, what is the suggested way to do a massive delete on a
>(fairly large = 8 GB) database?
table, then dropping and recreating the table would be the
recommended way. Dropped tables don't leave garbage. If not, then
possibly performing the deletes in a string of transactions, rather
than in one huge one, would (potentially, at least) release the
record stubs for regular GC to handle.
>Obviously you have to do something because it might corrupt theWhy would deleting records corrupt the database?
>database otherwise.
>One of our customers corrupted their database twice. And each timeIsn't that like shutting the stable door after the horse has
>they did a massive delete before without a backup/restore. So that's
>what I suggested to do, a backup without GC and a restore afterwards.
bolted? I'd be more concerned to discover why the delete operation
corrupted the database, and ensure that I'd fixed that.
./heLen