InterBase: тормозология и глюконавтика
Страница 4. Как это всё можно задать


Как это всё можно задать

При создании базы - опциями оператора create database. Синтаксис примерно следующий:
create database "имя" ... всякие опции ...
file "имя" ... опции для файла ...
file ...
Среди опций нас в данный момент интересуют:
page_size=nnn
Указывается только для базы в целом и задаёт размер страницы. Он должен быть кратным двойке, начиная с 1024. Изменять можно только в большую сторону, и обычно для этого есть основания, так как 1024 - не самый эффективный вариант.
length=nnn
Задаёт длинну в страницах главного или вторичного файла БД в зависимости от того, где указана опция.
starting at nnn
Задаёт начальную страницу базы, с которой начинается данный файл. Страницы считаются с 1. Таким образом, если первый файл в базе имел размер 10000 страниц, то второй должен быть starting at 10001. Наложения и разрывы в последовательности страниц в файлах не допускаются. Если в данном случае написать starting at 15000, то файл всё равно начнётся с 10001.

Теневые файлы создаются после того, как создан основной набор файлов и, в принципе не обязаны покрывать его весь. Каждой тени присваивается номер (целое положительное число) и все теневые файлы приписываются к определённому номеру тени. Внутри тени с одним номером правила создания файлов примерно такие же, как и в главной последовательности файлов - задаются размеры или (и) начальные позиции в страницах. Операторы называются create shadow/drop shadow. Кроме всего прочего, в этих операторах предусмотрена реакция на ситуацию, когда один из теневых наборов портится или становится недоступным (продолжать в этом случае работу на сохранившися наборах, или нет).

Как это всё можно изменить в существующей базе данных

Совсем коротко: снять с базы резервную копию и восстановить с новыми параметрами.

При создании резервной копии никаких особенностей практически нет. Достаточно указать ссылку на начальный файл главной (не теневой) копии, остальное InterBase найдёт сам.

При восстановлении с помощью программы Server Manager (или командной строки gbak) можно изменить размер страницы и состав файлов в главной копии базы. Первое делается вводом нужного значения в поле редактирования Page Size (-P nnnn), второе - нажатием кнопки Multi-File и добавлением вторичных файлов в список. Суть параметров та же, что и при создании базы данных.

Gbak по идее должен делать многофайловую базу, если вместо одного имени выходного файла написать "имя1 размер1 имя2 размер2 ... имяN". Размеры, как обычно, в страницах. Размер для последнего файла не указывается. Только вот в interbase 4.X приходилось наблюдать глюк, когда файлы создавались, но вся база восстанавливалась в последний, независимо от размеров остальных. В общем, будьте осторожны.

Снимать резервные копии с базы данных с тенями, я, честно говоря, не пробовал, но некоторые вещи в документации на этот счёт меня смутили. Во-первых, имеется опция игнорирования теней при восстановлении. Это значит, что состав теневых файлов, запоминается в резервной копии и восстанавливается по умолчанию. Если так, то почему этого не делается с последовательностью основных файлов?

 
« Предыдущая статья