Создать динамически растущую базу данных Sybase?

Я создаю небольшой скрипт установки / упаковки, который развертывает различные элементы и процедуры схемы базы данных. Прямо сейчас я просто использую это, чтобы сделать базу данных:

CREATE DATABASE dbname GO

Однако, когда я указываю свой маленький пакет на мои большие базы данных, они быстро заполняют выделенное пространство.

Мне не ясно, как создать базу данных, в которой есть место для роста на sybase.... Есть ли какой-то параметр CREATE DATABASE, который позволяет расширять пространство, или я должен предоставить определенный размер для каждой базы данных?

2 ответа

Некоторые исследования доказали, что создание растущей - это плохая идея... Я закончил тем, что делал что-то вроде этого (для тех, кто ищет, мне было трудно разобраться в части устройства...)

-- Data Device
disk init
name              = 'do02_data',
physname        = 'C:\sybase\data\do02data.dat',
size        = '15G',
directio    = true,
skip_alloc  = true
go

-- Log Device
disk init
name              = 'do02_log',
physname        = 'C:\sybase\data\do02log.dat',
size        = '7G',
directio    = true,
skip_alloc  = true
CREATE DATABASE do02 on do02_data = '15G' LOG ON  do02_log = '7G'             -- will     take some time
GO
sp_dboption do02, 'select into/bulkcopy', true
GO

'Select into/bulkcopy' также был необходим, если вы собираетесь использовать BCP сразу после этого.

Я просто положил инструкции в свой пакет для конечного пользователя, чтобы изменить эти значения по мере необходимости.

Просто, чтобы было понятно, есть два разных способа создания устройства.

Метод по умолчанию захватывает (выделяет) все пространство, назначенное устройству во время его создания. Таким образом, создание устройства 100 ГБ создаст файл 100 ГБ в файловой системе

Другой метод захватывает (выделяет) только необходимое ему пространство, но будет продолжать захватывать пространство, пока не достигнет предела, указанного в init диска. Этот параметр доступен только для устройств Unix и необработанных систем Windows и указывается с помощью skip_alloc = true

С помощью skip_alloc не создает динамически растущую базу данных, она только задерживает выделение, пока не потребуется пространство. База данных по-прежнему не будет больше, чем пространство, которое вы ей присвоили.

Если вы хотите создать автоматически расширяющуюся базу данных, у Sybase есть прецеденты использования sp_dbextends сделай это

Пользователи с более старыми версиями Sybase могут имитировать некоторые из них, используя пороговые значения (sp_addthreshold, sp_modifythreshold, sp_dropthreshold).

Другие вопросы по тегам