data page slots существенно больше Data pages
Добавлено: 22 сен 2015, 12:22
Растёт база данных. Насколько я понимаю, страницы некоторых таблиц не освобождаются:
FDB_DATA (142)
Primary pointer page: 373, Index root page: 374
Average record length: 27.60, total records: 15180676
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 186024, data page slots: 489560, average fill: 90%
FDB_LOG (133)
Primary pointer page: 355, Index root page: 356
Average record length: 65.78, total records: 72632
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 1574, data page slots: 4405, average fill: 94%
FDB_RECORDS (137)
Primary pointer page: 363, Index root page: 364
Average record length: 31.92, total records: 1690923
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 27109, data page slots: 47511, average fill: 76%
Статистика транзакций выглядит порядочно:
Database header page information:
Flags 0
Checksum 12345
Generation 4783504
Page size 4096
ODS version 11.1
Oldest transaction 4783492
Oldest active 4783493
Oldest snapshot 4783493
Next transaction 4783494
Bumped transaction 1
Sequence number 0
Next attachment ID 92
Implementation ID 16
Shadow count 0
Page buffers 256
Next header page 0
Database dialect 3
Creation date Jul 25, 2015 21:01:53
Attributes no reserve
Variable header data:
Sweep interval: 20000
Думаю, на транзакции пенять нет оснований.
Таблицы простые - блобов и триггеров нет. Апдейты не делаются, только инсерты и делете.
Было подозрение на "Неактуальные данные" из http://www.ibase.ru/devinfo/garbage.htm т.к. логи, например, действительно может никто не смотреть.
Но select count(*) и запуск sweep не помогает.
К базе подключаются с параметрами read_committed rec_version nowait.
Транзакции подтверждаются CommitRetaining (не знаю, почему).
С базой работает единственная длл-ка на Делфи 7 через стандартные компоненты InterBase.
Инсерт и делете делаются из хранимых процедур, которые содержат только эти операторы. Из кода вызывается процедура,
затем делается CommitRetaining единственной активной транзакции.
Приложение, пишущее и стирающее записи не отключается от базы по несколько недель. Есть другие приложения, которые через эту же
длл-ку читают таблицы. Некоторые тоже могут оставаться подключенными продолжительное время (днями/неделями).
Добавление записей происходит ежеминутно, удаление - раз в неделю.
Куда копать? Есть рекомендации?
FDB_DATA (142)
Primary pointer page: 373, Index root page: 374
Average record length: 27.60, total records: 15180676
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 186024, data page slots: 489560, average fill: 90%
FDB_LOG (133)
Primary pointer page: 355, Index root page: 356
Average record length: 65.78, total records: 72632
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 1574, data page slots: 4405, average fill: 94%
FDB_RECORDS (137)
Primary pointer page: 363, Index root page: 364
Average record length: 31.92, total records: 1690923
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 27109, data page slots: 47511, average fill: 76%
Статистика транзакций выглядит порядочно:
Database header page information:
Flags 0
Checksum 12345
Generation 4783504
Page size 4096
ODS version 11.1
Oldest transaction 4783492
Oldest active 4783493
Oldest snapshot 4783493
Next transaction 4783494
Bumped transaction 1
Sequence number 0
Next attachment ID 92
Implementation ID 16
Shadow count 0
Page buffers 256
Next header page 0
Database dialect 3
Creation date Jul 25, 2015 21:01:53
Attributes no reserve
Variable header data:
Sweep interval: 20000
Думаю, на транзакции пенять нет оснований.
Таблицы простые - блобов и триггеров нет. Апдейты не делаются, только инсерты и делете.
Было подозрение на "Неактуальные данные" из http://www.ibase.ru/devinfo/garbage.htm т.к. логи, например, действительно может никто не смотреть.
Но select count(*) и запуск sweep не помогает.
К базе подключаются с параметрами read_committed rec_version nowait.
Транзакции подтверждаются CommitRetaining (не знаю, почему).
С базой работает единственная длл-ка на Делфи 7 через стандартные компоненты InterBase.
Инсерт и делете делаются из хранимых процедур, которые содержат только эти операторы. Из кода вызывается процедура,
затем делается CommitRetaining единственной активной транзакции.
Приложение, пишущее и стирающее записи не отключается от базы по несколько недель. Есть другие приложения, которые через эту же
длл-ку читают таблицы. Некоторые тоже могут оставаться подключенными продолжительное время (днями/неделями).
Добавление записей происходит ежеминутно, удаление - раз в неделю.
Куда копать? Есть рекомендации?