Subject | Re: [firebird-support] Re: Maximum number of rows in Firebird 2.1 and up (is it 1099511627776 records ?) |
---|---|
Author | Ann Harrison |
Post date | 2011-04-18T16:51:36Z |
On Sun, Apr 17, 2011 at 6:09 PM, lmatusz <matuszewski.lukasz@...> wrote:
The larger the records,
the more record numbers are wasted. Here's some of the relevant code
from pag.cpp
/* Compute the number of data pages per pointer page. Each data page
requires a 32 bit pointer and a 2 bit control field. */
dbb->dbb_dp_per_pp = (dbb->dbb_page_size - OFFSETA(pointer_page*, ppg_page))
* 8 / (BITS_PER_LONG + 2);
/* Compute the number of records that can fit on a page using the
size of the record index (dpb_repeat) and a record header. This
gives an artificially high number, reducing the density of db_keys. */
dbb->dbb_max_records = (dbb->dbb_page_size - sizeof(data_page)) /
(sizeof(data_page::dpg_repeat) + OFFSETA(RHD, rhd_data));
Best regards,
Ann
>The number of records in a table depends on the size of the records.
> Sorry for bothering... but i would like mathematical equation for max number of rows/records.
The larger the records,
the more record numbers are wasted. Here's some of the relevant code
from pag.cpp
/* Compute the number of data pages per pointer page. Each data page
requires a 32 bit pointer and a 2 bit control field. */
dbb->dbb_dp_per_pp = (dbb->dbb_page_size - OFFSETA(pointer_page*, ppg_page))
* 8 / (BITS_PER_LONG + 2);
/* Compute the number of records that can fit on a page using the
size of the record index (dpb_repeat) and a record header. This
gives an artificially high number, reducing the density of db_keys. */
dbb->dbb_max_records = (dbb->dbb_page_size - sizeof(data_page)) /
(sizeof(data_page::dpg_repeat) + OFFSETA(RHD, rhd_data));
Best regards,
Ann