Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

Неплохая стратегия - отключение автоматической чистки и управление чисткой вручную. Вы можете отслеживать статистику базы данных и выполнять ручную чистку или "по потребности", или по составленному графику. Например, можно включить команду очистки в скрипт стоп или в выполняемый по расписанию пакетный файл.

Информацию о том, как статистический отчет по базе данных может помочь в анализе требований к чистке вашей базы данных, см. в разд. "Получение статистики по индексам" главы 18.

<p>Сборка мусора</p>

Firebird выполняет сборку мусора в фоновом режиме для ограничения роста базы данных из-за устаревших версий записей. Сборка мусора освобождает память, отведенную устаревшим версиям строк, насколько это возможно, после освобождения строк транзакциями, их использующими. Транзакции начинают сборку мусора, когда они встречают старые версии строк, отмененные другими транзакциями. Удаленные строки и версии, оставленные после отката транзакции, избегают такой сборки мусора. Строки, к которым редко происходит обращение, также накапливают старые версии.

Еще сборка мусора происходит при резервном копировании базы данных с использованием утилиты gbak, поскольку задача gbak имеет дело с каждой строкой в каждой таблице. Однако gbak не выполняет полной чистки. Как и обычная сборка мусора, она оставляет версии удаленных и отмененных по rollback записей. Чистка является единственным способом избавиться от этого, она выполняется быстрее, чем восстановление базы данных из резервной копии.

<p>Интервал чистки</p>

Интервалом чистки (sweep interval) является установленное для базы данных целое число, которое определяет предел для некоторого набора условий, что приведет к выполнению автоматической чистки.

Сервер Firebird ведет список транзакций. Любая транзакция, находящаяся в любом состоянии, кроме подтвержденного, называется заинтересованной транзакцией. Самая старая из этих "заинтересованных" транзакций (старейшая заинтересованная транзакция, Oldest Interesting Transaction, OIT) отмечает начальную точку для условия, называемого "зазором".

Противоположным концом этого зазора является старейшая транзакция, которая все еще активна: самая старая активная транзакция (Oldest Active Transaction, OAT). Зазор, следовательно, является разностью между OIT и OAT[153]. Когда величина зазора достигает числа, указанного как интервал чистки, то автоматически запускается чистка во время запуска новой транзакции.

Базы данных создаются с интервалом чистки 20 000.

Существует маленькое, но важное различие: автоматическая чистка не появляется каждые 20 000 транзакций. Она появляется, когда разница между OIT и OAT - зазор - достигает заданного предела. Если приложения базы данных аккуратно подтверждают каждую транзакцию, OAT будет увеличиваться, пока не достигнет предела интервала чистки, и тогда будет запущена чистка.

Изменение интервала чистки

Изменение интервала чистки мало влияет на размер базы данных, если только база данных не накопила очень большого количества отмененных транзакций. Однако если вы замечаете увеличение времени запуска транзакции с момента последней чистки, то уменьшение интервала чистки может помочь сократить накопление объектов, вызванных откатом транзакций.

Если интервал чистки слишком мал, производительность приложения может иметь тенденцию к ухудшению, по причине слишком частого выполнения чистки. В этом случае увеличение интервала чистки может помочь улучшить общую производительность.

Переключателем режима для установки интервала чистки является -h[ousekeeping] n, где n представляет новое значение счетчика (интервала).

gfix -h 10000 /data/accounts.fdb -user SYSDBA-pas masterkey

устанавливает новое значение интервала чистки для accounts.fdb в 10 000.

Отмена автоматической чистки

Вы можете решить отменить автоматическую чистку, если вам нужно исключить случайные, непредсказуемые задержки, возникающие из-за автоматической чистки. Такая отмена не рекомендуется, если только управление старыми версиями записей эффективно не осуществляется альтернативными средствами, такими как отслеживание статистики и регулярное выполнение ручной чистки.

Автоматическая чистка может быть отменена установкой интервала чистки в 0:

./gfix -h 0 /data/accounts.fdb -user SYSDBA-pas masterkey или (Windows):

gfix -h 0 d:\data\accounts.fdb -user SYSDBA-pas masterkey

<p>Выполнение ручной чистки</p>

Ручная чистка может быть выполнена в любое время для освобождения пространства, занимаемого старыми версиями, особенно версиями записей, оставшихся от отмены транзакций и после удалений. Общим правилом является выполнение чистки во время низкой активности сервера базы данных, что исключает конкуренцию с клиентами за ресурсы.

Вы можете выполнять вашу собственную чистку, если:

* вы отслеживаете зазор и собираетесь выбрать подходящее время для устранения "застрявших" старых версий;

* вы считаете, что редкие изменения нечасто посещаемых записей создали запасы несобранного мусора;

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных