В этом примере gbak восстанавливает базу данных с размером страницы 8192 байт:
gbak -с -р 8192 d:\data\backups\ourdata.fbk d:\data\ourdata_trial.fdb
Аналогичным образом вы можете использовать восстановление для изменения размера кэша базы данных по умолчанию (в страницах или в "буферах"):
gbak -с -buffers 10000 d:\data\backups\ourdata.fbk d:\data\ourdata_trial.fdb
Размер восстанавливаемой базы данных задается в страницах базы данных. Размер файла базы данных по умолчанию равен 200 страницам. Размер страницы базы данных по умолчанию 4 Кбайт, следовательно, если размер страницы не был изменен, то размер базы данных по умолчанию будет 800 Кбайт. Этого достаточно только для очень маленькой базы данных.
Изменение размера страницы может повысить производительность при определенных условиях.
* Firebird работает лучше, если размер строк много меньше размера страницы. Подумайте об увеличении размера страницы, если база данных содержит часто используемые таблицы с большими строками данных.
* Если база данных содержит большие индексы, то больший размер страницы базы данных уменьшает количество уровней в индексном дереве. Чем меньше глубина индекса, тем быстрее он может быть просмотрен. Подумайте об увеличении размера страницы, если глубина индекса превышает три для любого часто используемого индекса. См. главу 18, особенно разд. "Тема оптимизации" ближе к концу главы и замечания по использованию утилиты gstat для определения того, насколько хорошо выполняются ваши индексы.
* Хранение и отыскание данных BLOB наиболее эффективны, когда целый BLOB располагается на одной странице базы данных. Если приложение хранит множество BLOB, превышающих 4 Кбайт, больший размер страницы сокращает время доступа к данным BLOB.
* Сокращение размера страницы может быть более подходящим, если большинство транзакций используют только небольшое количество строк данных, поскольку объем перемещаемых туда и обратно данных будет меньше, и меньше памяти будет использовано для дискового кэша.
Использование gbak с Менеджером сервисов Firebird
Переключатель -se[rvice_mgr] вызывает Менеджер сервисов на (обычно) удаленном сервере. Это может сэкономить значительный объем времени и сетевого трафика, когда вы хотите создавать файлы копии или базы данных на том же хосте, где размещается база данных.
На сервере Windows с локальным соединением использование Менеджера сервисов не дает никаких преимуществ.
На сервере POSIX это экономит время и трафик - даже при локальном соединении.
Если вы выполняете gbak с переключателем -service, то утилита работает другим образом. Это приводит к тому, что gbak вызывает функции копирования и восстановления Менеджера сервисов Firebird на сервере, где находится база данных.
Вы можете копировать во множество файлов и восстанавливать из множества файлов при использовании Менеджера сервисов.
Переключатель -se получает аргумент, который состоит из имени хоста подключенного сервера с константной строкой service_mgr через специальный символ. Синтаксис этого аргумента варьируется в соответствии с используемым сетевым протоколом:
* TCP/IP: hostname: service_mgrj
* именованные каналы (Named Pipes): \\hostname\service_mgr.
Восстановление в POSIX
Пользователь, который был текущим на сервере, когда был вызван Менеджер серверов для выполнения копирования - root, firebird или interbase - является владельцем файла копии на уровне файловой системы, что позволяет читать его только этим пользователем.
Когда вам нужно восстановить базу данных на сервере POSIX, которая была скопирована с использованием Менеджера сервисов, вы должны или использовать Менеджер сервисов, или соединиться с системой как владелец этого файла.
Когда режим -service не используется, владение файлом копии присваивается тому, кто выполнял gbak.
Эти ограничения не применяются к платформе Windows.
Копирование
В этом примере мы копируем базу данных, находящуюся на диске D: удаленного сервера, в файл копии на диске F: той же самой удаленной машины. Мы направляем подробный отчет об операции в файл протокола в другом каталоге. Как обычно, пример является одной строкой:
gbak -b -se hotchicken :service_mgr
d: \data\stocks.fdb
f:\backups\stocks.20040715.fbk
-v -y f:\backups\logs\stocks.20040715.log
! ! !
ПРИМЕЧАНИЕ. Порядок переключателей имеет значение, когда вы используете переключатель -se. Если вы хотите определить файл протокола, убедитесь, что вы поместили его после задания хост-сервера, чтобы избежать ошибки в команде, по причине невозможности отыскать размещение файла протокола.
. ! .
Восстановление