Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Шрифт:
Но база данных продолжает хранить все существующие данные и определения в соответствии с диалектом 1. Здесь существует несколько ловушек, в особенности в отношении числовых типов с фиксированной точкой.
Короче говоря, изменение диалекта с помощью gfix не будет ни тактикой быстрой миграции, ни надежным способом миграции из диалекта 1 в диалект 3. Быстрое изменение средствами gfix означает медленный способ полной миграции. Опытные пользователи предлагают вместо этого извлечь скрипт схемы вашей базы данных диалекта 1, изменить подходящим образом определения, а затем использовать инструмент перекачки данных для перемещения старых данных в новую базу.
Если же вы все-таки
gfix -s[ql_dialectj n база-данных
Здесь n равно 1 или 3.
Например, для изменения диалекта базы данных на 3 выполните:
./gfix -s 3 /data/accounts.fdb
Под Windows вы можете выполнить следующее:
gfix -sql_dialect 3 d:\data\accounts.fdb
Включение и отключение "использовать все пространство"
Firebird заполняет страницы базы данных таким образом, что объем хранимых на странице данных не превышает 80 процентов. Некоторое уплотнение можно получить, изменив коэффициент заполнения на 100 процентов. Это может привести к улучшению производительности при очень большом объеме добавления данных, в особенности если размер строки много меньше размера страницы и множество строк может экономно храниться на одной странице.
Также имеет смысл полностью заполнять страницы в базе данных, если вы планируете распространять ее как базу данных только для чтения, например, в качестве каталога или демонстрационного примера.
Командным переключателем является -u[se], который имеет два аргумента:
gfix -u[se] {reserve | full}
reserve устанавливает использование страницы на 80 процентов, a full устанавливает использование страницы на 100 процентов.
Для включения "использовать все пространство" применяйте команду: ./gfix -use full /demos/catalog.fdb
Для отключения "использовать все пространство" и возврата к 80-процентному заполнению применяйте команду:
./gfix -use reserve /demos/catalog.fdb
! ! !
ПРИМЕЧАНИЕ. Чтобы эта команда работала, база данных должна находиться в режиме чтения/записи.
. ! .
Включение и отключение синхронного вывода
Синонимом синхронного вывода является Forced Writes. Когда поведение является синхронным ("Forced Writes включено"), новые записи, новые версии записей и удаления немедленно записываются на диск после пересылки. При асинхронном выводе ("Forced Writes отключено") новые и измененные данные сохраняются в кэше файловой системы, полагаясь на поведение операционной системы, когда она выведет их на диск.
Термин "отключение Forced Writes" означает переключение поведения по выводу данных с синхронного на асинхронное.
Синтаксис этой команды:
gfix -w[rite] {sync ! async} Для включения Forced Writes введите: gfix -w sync d:\data\accounts.fdb Для отключения Forced Writes введите:
gfix -w async d:\data\accounts.fdb
Firebird инсталлируется в Windows NT/2000/XP и Linux с включенным режимом Forced Writes. В очень надежной среде с надежной поддержкой бесперебойного питания (UPS) администратор базы данных может отключить Forced Writes для сокращения операций ввода/вывода и улучшения производительности. Когда отключается Forced Writes в менее надежных средах, база данных становится чувствительной к потере данных и даже к их разрушению в случае неуправляемого отключения.
Forced Writes неприменимо в Windows 95. В серверах Windows 98 и ME вы никогда не должны отключать Forced Writes.
Операционные системы Windows менее надежны, чем другие системы в отношении записи на диск кэша. Это проявляется в том, что приложения не могут явно запросить систему Windows записать кэш на диск, система может отложить все выводы на диск до того момента, как файл базы данных будет закрыт.
* Firebird 1.0.x: если Forced Writes не задается для сервера Windows, работающего 24/7 (24 часа, 7 дней в неделю), то запись на диск может никогда не произойти.
* Firebird 1.5: были добавлены новые установки конфигурации для записи буферов кэша на диск в Windows. См. параметры MaxUnfiushedwrites и MaxUnflushedWriteTime (firebird.COnf) В главе 36.
Windows ME вместе с XP Ноте и Professional Edition имеет возможность, называемую системным восстановлением, которая вызывает копирование самой файловой системы в файлы с некоторыми суффиксами каждый раз, как происходят операции ввода/вывода. Системное восстановление не является заменой Forced Writes [156] .
156
Суффикс .gdb включен в filelist.xml, в список файлов, к которым применяется системное восстановление, располагающихся в каталоге Windows/System. К сожалению, из списка типы файлов не могут быть удалены. Это действует на базы данных Firebird, имеющие расширение gdb - системное восстановление приводит к замедлению начального соединения с подобными базами данных, и бывает, что это приводит к разрушению данных (подтвержденные
Вам следует знать, что база данных Firebird, которая начала свою жизнь в InterBase 6.x (коммерческом или с открытыми текстами), создана с отключенным режимом Forced Writes по умолчанию.
Запрос версии сервера Firebird
Переключатель -z (без параметров) показывает версию gfix и сервера Firebird, инсталлированного на сервере.
Вот синтаксис:
gfix -z
Проверка и починка данных
В повседневных операциях в базе данных иногда происходят события, создающие некоторые проблемы для структуры базы данных.
* Ненормальное завершение сервера. Ненормальное завершение не влияет на целостность базы данных. Однако если Firebird уже назначил страницу данных для неподтвержденных изменений, запрошенных клиентом, эта страница становится бесхозной, "осиротевшей". Поскольку такие страницы являются вполне безобидными, они лишь занимают дисковое пространство, которое должно быть возвращено в свободное пространство. Проверка может отыскать и освободить это пространство.
* Ошибки записи операционной системы или оборудования. Ошибки записи обычно создают проблемы для целостности базы данных. Они могут привести к разрушению или потере структур данных, таких как страницы базы данных и индексы. В худшем случае такие разрушения структур данных могут сделать подтвержденные данные нечитаемыми. Иногда проверка может помочь найти такие разрушенные фрагменты и удалить их.
Когда проверять базу данных
Вы должны проверять базу данных: