Диалект
По умолчанию Firebird создает базу данных диалекта 3. Если вы хотите создать базу данных диалекта 1, первым оператором в вашем скрипте (или первым действием в вашем инструменте администратора) должен быть:
SET SQL DIALECT 1;
! ! !
ВНИМАНИЕ! Если isql в настоящий момент соединен с базой данных, он предложит вам подтвердить текущую транзакцию. Ответьте Yes (Да) для продолжения создания новой базы данных. Некоторые инструменты сторонних разработчиков вначале могут потребовать, чтобы вы отсоединились от базы данных.
. ! .
Следующий оператор - или первый для базы данных диалекта 3 - должен быть оператором CREATE DATABASE или CREATE SCHEMA такого синтаксиса:
CREATE {DATABASE | SCHEMA} 'спецификация-файла '
[USER 'имя-пользователя' [PASSWORD 'пароль']]
[PAGE_SIZE [=] целое]
[LENGTH [=] целое [PAGE[S]]]
[DEFAULT CHARACTER SET набор-символов]
[<вторичный-файл>] ;
<информация-о-файле> = LENGTH [=] целое [PAGE[S]]
STARTING [AT [PAGE]] целое [<информация-о-файле>]
<вторичный-файл> = FILE 'спецификация-файла' [<информация-о-файле>]
[<вторичный-файл> ]
! ! !
СОВЕТ. Используйте одиночные кавычки (апострофы) для таких строк, как имена файлов, имена пользователей и пароли.
. ! .
DATABASE или SCHEMA?
CREATE DATABASE и CREATE SCHEMA являются одним и тем же оператором. Это только вопрос ваших предпочтений.
Обязательные и необязательные атрибуты
Единственным обязательным атрибутом оператора CREATE является спецификация файла- имя первичного файла базы данных и путь в файловой системе к его размещению.
Имя и путь к базе данных
Спецификация файла должна быть полным абсолютным путем к файлу. Путь должен иметь правильный формат в операционной системе.
Для POSIX:
CREATE DATABASE '/opt/databases/mydatabase.fdb'
Для Win32:
CREATE SCHEMA 'd:\databases\mydatabase.fdb'
Вы можете использовать наклонную черту (/) или обратную наклонную черту (\) в качестве разделителя каталогов. Firebird автоматически преобразует любой тип в тип, соответствующий серверу операционной системы.
Апострофы в спецификации файла являются обязательными. Все элементы спецификации файла чувствительны к регистру для платформ POSIX.
Создание удаленной базы данных
При создании базы данных с клиентской рабочей станции или локально в Суперсервере для Linux - интерактивно или с использованием скрипта - вы должны включить имя хоста.
Для POSIX:
CREATE DATABASE 'rayserver:/opt/databases/mydatabase.fdb'
Для локального Linux Суперсервера- как и в предыдущем случае или так:
CREATE DATABASE 'localhost:/opt/databases/mydatabase.fdb'
Для Win32:
CREATE SCHEMA 'NTServer:d:\databases\mydatabase.fdb'
Владение базой данных
Если вы подключены как пользователь SYSDBA, то SYSDBA будет владеть новой базой данных, независимо от того, как были заданы предложения USER и PASSWORD. Хотя указание владельца не является обязательным, очень желательно это сделать. При этом по причине безопасности вы, вероятно, захотите удалить из скрипта пароль пользователя перед архивацией скрипта с остальной системной документацией.
CREATE DATABASE '/opt/databases/mydatabase.fdb'
USER 'ADMINUSR' PASSWORD 'yyuryyub';
Размер страницы
Необязательный атрибут PAGE_SIZE (размер страницы) задается в байтах. Если вы его опустите, будет принято значение по умолчанию: 4096 байт в isql. Некоторые другие инструменты применяют свое значение по умолчанию, значит, есть веский аргумент указывать это значение в скрипте явно. Размер страницы может быть 1024, 2048, 4096, 8192 или 16 384. Любые другие значения будут преобразованы в ближайшее меньшее число из этого списка. Например, если вы укажете 3072, Firebird создаст базу данных с размером страницы 2048.
CREATE DATABASE '/opt/databases/mydatabase.fdh' USER 'ADMINUSR'
PASSWORD 'yyuryyub'
PAGE_SIZE 8192
Факторы, влияющие на выбор размера страницы
Выбор размера страницы не является вопросом применения некоторого "правила". Будет неплохо начать с размера по умолчанию - 4 Кбайт. Когда придет время настраивать базу данных для улучшения производительности, вы сможете поэкспериментировать, создавая резервную копию базы данных и восстанавливая ее с другим размером страницы. Подробности см. в главе 38.
Выбранный вами размер страницы может улучшить производительность или плохо на нее воздействовать в зависимости от множества факторов, главным образом, от структуры и порядка использования таблиц, к которым чаще всего осуществляется доступ. Каждая страница базы данных будет заполняться приблизительно на 80 процентов, следовательно, рассуждайте в терминах реального размера страниц, который должен составлять около 125 процентов от предполагаемого минимума.
Размер строки наиболее часто используемых таблиц также может оказывать влияние. Структура записи, которая слишком велика, чтобы разместиться на одной странице, требует обращения более чем к одной странице при ее чтении или записи, следовательно, доступ может быть оптимизирован при выборе размера страницы, который позволит разместить полностью одну строку или кратное число строк объемных таблиц.
Количество строк, которое можно предположить у ваших таблиц через некоторое время, может оказывать влияние. Если множество строк может разместиться на одной странице, больший размер страницы может уменьшить общее количество страниц данных и индексов, которые нужно прочесть в одной операции.
Набор символов по умолчанию
Строго рекомендуется, чтобы все - или почти все - ваши текстовые данные были в кодировке U.S. ANSII.
CREATE DATABASE '/opt/databases/mydatabase.fdb'
USER 'ADMINUSR' PASSWORD 'yyuryyub'
PAGE_SIZE 8192
DEFAULT CHARACTER SET ISO8859_1;
Подробнее о наборах символов см. в главе 11. Доступные наборы символов представлены в приложении 8.
Получение информации о базе данных
После того как вы создали базу данных и подтвердили создание (commit), вы можете в isql отобразить ее детали, используя команду SHOW DATABASE:
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).