Subject Re: Any SELECT or UPDATE transaction increases size of data base in 2 bits
Author gray_area_2
--- In firebird-support@yahoogroups.com, "Ann W. Harrison"
<aharrison@...> wrote:
>
> gray_area_2 wrote:
> >
> > If I run transaction ...
> > many times I got increase in size of the database in one page
(4K)
> > approximately for every 16K transactions. The increase is linear.
> > Which means thet if I run 160K transactions it will be 10 pages.
> >
> > Have anyone observed this effect before? What causes it?
>
> My guess is you're seeing the growth of TIPs (Transaction
> Inventory Pages) and that the growth is stepwise rather than
> strictly linear.
>
> Firebird records the state of transactions on TIPs, using two
> bits per transaction. Essentially the TIPs contain an array
> of two-bit elements, indexed by transaction number. Each TIP
> actually has some header information indicating that it's a
> TIP and the page number of the next TIP. A 4Kb page holds a
> bit more than 16K of entries - counting on my fingers I find
> 20 bytes of header, leaving 4076 bytes of entries or 16304
> entries per page.
>
> When a new TIP is allocated, all states are 0 - meaning that
> the transactions are active or not yet started. As those
> transactions finish their states are recorded as Limbo (1),
> Dead (2), or Committed (3). When a transaction starts, the
> system insures that the existence of TIP that will hold it.
> Thus, creating transaction 16304 adds a page to the database.
> Starting the next 16303 transactions won't affect the size
> of the database - the next creates another new page.
>
> When you run out of transaction numbers at 4G, you will
> have used 263431 TIP pages.
>
>
> Regards,
>
>
> Ann
>

Ann

This explains a lot. It is not a problem/bug but the feature of
design.

Is here a way to avoid this TIP growth? I have tried to reopen
connection, doesn't help.

Thank you!