SQL> SHOW DATABASE;
Database: /opt/databases/mydatabase.fdb
Owner: ADMINUSR
PAGE_SIZE 8192
Number of DB pages allocated = 176
Sweep interval = 20000
Forced Writes are ON
Transaction - oldest = 5
Transaction - oldest active = 6
Transaction - oldest snapshot = 6
Transaction - Next = 9
Default character set: ISO8859_1
SQL>
Интервал очистки и транзакции
Информацию о чистке базы данных и интервале очистки см. в разд. "Гигиена базы данных" далее в этой главе.
Значения старейшей ("старейшей заинтересованной"), старейшей активной и следующей транзакций являются важными для производительности и поведения сервера. Подробности см. в части VI.
Принудительная запись
Принудительная запись (forced writes) является синонимом синхронной записи. На платформах, которые поддерживают асинхронную запись, базы данных Firebird создаются по умолчанию с принудительной записью. Фраза "отключение принудительной записи" означает переключение поведения при записи с синхронного на асинхронное.
* При включенной принудительной записи новые записи, новые версии записей и удаления физически записываются на диск сразу после завершения операции или, самое позднее, после подтверждения транзакции.
* Асинхронная запись приводит к тому, что новые или измененные данные хранятся в кэше файловой системы. Когда эти данные будут записаны на диск, зависит от поведения операционной системы.
! ! !
ПРИМЕЧАНИЕ. Платформа Windows 95 не поддерживает асинхронную запись.
. ! .
Обсуждение отключения принудительной записи и инструкции по ее установке при использовании gfix см. в главе 39.
Базы данных из одного и нескольких файлов
Любая база данных Firebird может состоять из нескольких файлов. Вначале вам не нужно принимать решения о количестве файлов. База данных из одного файла может
быть преобразована в многофайловую в любое время при использовании ALTER DATABASE (обсуждается в этой главе) или инструмента gbak (см. главу 38).
Задание размера файла для однофайловой базы данных
Вы можете указать размер первичного файла в страницах следом за атрибутом PAGE_SIZE. Например, следующий оператор создает базу данных в файле размером 10 000 страниц:
CREATE DATABASE '/opt/databases/mydatabase.fdb'
USER 'ADMINUSR' PASSWORD 'yyuryyub'
PAGE_SIZE 8192
LENGTH 10000 PAGES
/* ключевое слово PAGES необязательно */
DEFAULT CHARACTER SET WIN1251;
Если база данных растет до размера большего, чем указанный размер файла, то Firebird расширяет первичный файл за пределы LENGTH, пока не будет достигнут предел, существующий для файловой системы, или не будет исчерпано дисковое пространство. Чтобы не допустить этого, вы можете хранить базу данных более чем в одном файле; дополнительные файлы называются вторичными файлами. Файлы могут размещаться на нескольких дисках.
Создание многофайловой базы данных
Многофайловые базы данных являются результатом старых файловых систем, где абсолютный предел размера файла 2 Гбайта (FAT32, ext2) или 4 Гбайта (система NTFS с 32-битовым вводом/выводом). Они используются для решения общей проблемы пользователей при разрушении базы данных InterBase в случае превышения лимита, когда сервер начинает перезаписывать данные файла с самого начала. Такая же проблема появляется, когда база данных исчерпает размер вторичного файла. Firebird просто отказывается осуществлять запись, когда последний файл достигнет лимита. Следовательно, разрушение существующих данных здесь предотвращено, хотя последующие записи данных будут потеряны.
В следующем примере создается база данных, состоящая из трех файлов, каждый размером потенциально 2 Гбайта. Если файловая система поддерживает больший размер файлов, то последний файл будет продолжать расти, пока не достигнет этого предела.
CREATE DATABASE 'LOCALHOST:/data/sample.fdb'
PAGE_SIZE 8192
DEFAULT CHARACTER SET WIN1251
LENGTH 250000 PAGES
FILE '/data/sample.fdl'
FILE '/data/sample.fd2'
STARTING AT 250001;
Вы должны указать диапазон страниц для каждого файла либо задав количество страниц в каждом файле, либо указав начальный номер страницы для файла. Для последнего файла вам не нужно указывать размер, поскольку Firebird динамически устанавливает размер последнего файла и будет увеличивать его, пока не будет исчерпано дисковое пространство или пока он не достигнет лимита файловой системы.
В этом примере первый вторичный файл "начнет работать", когда первичный файл приблизится к размеру 2 Гбайта. "Следующий файл в цепочке" начинает применяться, когда запрашиваемой операции понадобится использовать больше страниц, чем могут предоставить предыдущие файлы без превышения заданных им лимитов [36] При создании или расширении многофайловой базы данных для всех файлов базы данных используйте либо только LENGTH (явную длину конкретного файла), либо только STARTING AT (указание начала нового файла), для избежания путаницы. - Прим. науч. ред.
.
Читать дальше