Альтернативный буферный пул в СУБД OpenEdge (Progress)
Использование OpenEdge SQL для управления типами буферного пула объектов базы данных
Администратор базы данных может использовать язык OpenEdge SQL для управления объектами базы данных, которые должны работать с Альтернативным буферным пулом. Использование этой возможности языка доступно только для таблиц, индексов и LOB-полей, размещенных в области хранения с типом SAT-II.
Оператор CREATE TABLE
Для создания таблицы с указанием типа буферного пула используется оператор CREATE TABLE с опцией BUFFER_POOL.
Синтаксис оператора CREATE TABLE следующий:
CREATE TABLE [ owner_name.]table_name
( { column_definition | table_constraint }, ...)
[ AREA area_name ]
[ ENCRYPT WITH cipher ]
[ BUFFER_POOL { PRIMARY | ALTERNATE } ]
[ progress_table_attribute_keyword value ]
;
CREATE TABLE [ owner_name.]table_name
[ (column_name [ NOT NULL] , ... ) ]
[ AREA area_name ]
[ ENCRYPT WITH cipher ]
[BUFFER_POOL { PRIMARY | ALTERNATE } ]
AS query_expression
;
Следующий пример демонстрирует создание таблицы в области с типом SAT-II, которая будет использовать Альтернативный буферный пул:Здесь изменения в синтаксисе выделены жирным шрифтом.
CREATE TABLE PUB.tblb2 (fld1 int, fld2 int, fld3 varchar(25)) AREA "TestArea2" BUFFER_POOL ALTERNATE; COMMIT;
Для настройки LOB-поля, которое будет работать с Альтернативным буферным пулом, в операторах CREATE TABLE или ALTER TABLE ADD COLUMN внесены следующие изменения:
{ LVARCHAR | CLOB | LVARBINARY | BLOB } [ ( length ) ]
[ AREA areaname ]
[ ENCRYPT WITH cipher ]
[ BUFFER_POOL { PRIMARY | ALTERNATE } ]
Следующий пример демонстрирует создание таблицы, которая использует первичный буферный пул, но ее LOB-поля будут использовать Альтернативный буферный пул:
CREATE TABLE PUB.tblblob2
(bfld BLOB BUFFER_POOL ALTERNATE,
cfld CLOB BUFFER_POOL ALTERNATE,
otherfld int)
AREA "TestArea2";
COMMIT;
Так же можно использовать BUFFER_POOL для конкретного LOB-поля, размещенного в отдельной области хранения, как показано в следующем примере:
CREATE TABLE tblname (bfld BLOB AREA areaname1 BUFFER_POOL ALTERNATE,
cfld CLOB AREA areaname2,
otherfld int)
AREA areaname;
Оператор CREATE INDEX
Для настройки индекса, который будет использовать Альтернативный буферный пул, в синтаксис оператора CREATE INDEX внесены изменения аналогичные оператору CREATE TABLE. Индекс должен быть размещен в области хранения с типом SAT-II. Изменения в синтаксисе оператора CREATE INDEX следующие:
CREATE [ UNIQUE ] INDEX index_name
ON table_name
( { column_name [ ASC | DESC ] } [, ... ] )
[ AREA area_name ]
[ ENCRYPT WITH cipher ]
[ BUFFER POOL { PRIMARY | ALTERNATE } ]
[ PRO_DESCRIPTION value | PRO_ACTIVE {'N'|'n'} ];
Следующий пример демонстрирует создание индекса, который будет использовать Альтернативный буферный пул:
CREATE INDEX idx1 ON PUB.tblb2
(fld1, fld2)
AREA "TestArea2"
BUFFER_POOL ALTERNATE;
COMMIT;
Оператор ALTER TABLE
Оператор ALTER TABLE с параметром SET BUFFER_POOL выполняет изменение типа буферного пула у существующего объекта.
Синтаксис оператора следующий:
ALTER TABLE [ owner_name.]table_name
{ADD column-definition
|SET progress_table_attribute value
|SET [ ENCRYPT WITH cipher
| DECRYPT
| ENCRYPT REKEY ]
|SET BUFFER_POOL { PRIMARY | ALTERNATE }
|ALTER [ COLUMN ]column_name { SET DEFAULT value
| DROP DEFAULT
| SET [NOT] NULL
|SET progress_column_attribute value}
| SET ENCRYPT WITH cipher
| SET DECRYPT
| ENCRYPT REKEY
| SET BUFFER_POOL { PRIMARY | ALTERNATE } }
[COLLATE case_insensitive | case_sensitive]
|DROP COLUMN column_name { CASCADE | RESTRICT }
|ADD { primary_key_definition | foreign_key_definition |
uniqueness_constraint | check_constraint }
|ADD CONSTRAINT constraint_name
|DROP CONSTRAINT constraint_name [ CASCADE | RESTRICT]
|ALTER INDEX index_name SET progress_index_attribute value
|ALTER INDEX index_name SET [ ENCRYPT WITH cipher
| DECRYPT
| ENCRYPT REKEY ]
|ALTER INDEX index_name SET BUFFER_POOL { PRIMARY | ALTERNATE }
|RENAME {table_name TO new_table_name
|COLUMN column_name TO new_column_name
|INDEX index_name TO new_index_name }
};
Следующий пример демонстрирует изменение типа буферного пула таблицы с Первичного на Альтернативный:
ALTER TABLE pub.customer SET BUFFER_POOL ALTERNATE;
Пример оператора ALTER TABLE, который добавляет два LOB-поля в таблицу с настройкой типа буферного пула, выглядит следующим образом:
ALTER TABLE tblname ADD COLUMN (bfld BLOB AREA areaname1
BUFFER_POOL ALTERNATE,
cfld CLOB AREA areaname2
BUFFER_POOL PRIMARY);
Параметр SET BUFFER_POOL в операторе ALTER TABLE может использоваться и для изменения типа буферного пула конкретного индекса:
ALTER TABLE tblname ALTER INDEX idxname SET BUFFER_POOL ALTERNATE;
С помощью этого параметра можно изменять тип буферного пула и у LOB-полей:
ALTER TABLE tblname ALTER COLUMN bfld SET BUFFER_POOL PRIMARY;

