Альтернативный буферный пул в СУБД OpenEdge (Progress)
Просмотр списка объектов использующих Альтернативный буферный пул
Просмотреть список объектов, использующих Альтернативный буферный пул, можно двумя способами: через Data Dictionary или с помощью утилиты PROUTIL.
Просмотр через Data Dictionary
С помощью Data Dictionary можно получить список ABL-объектов, использующих Альтернативный буферный пул, но нельзя посмотреть информацию по областям хранения и SQL объектам.
Чтобы посмотреть список объектов, использующих Альтернативный буферный пул, войдите в Data Dictionary в меню Database -> Reports -> Alternate Buffer Pool. Появится отчет следующего вида:
Этот отчет предоставляет данные только по таблицам, индексам и LOB-полям, которые используют Альтернативный буферный пул. Просмотр информации по типам буферного пула у областей хранения или SQL-объектов (включая ABL-объекты) можно осуществить с помощью утилиты PROUTIL.
Просмотр с помощью PROUTIL
Утилита PROUTIL с параметром VIEWB2 формирует отчет по всем объектам базы данных, и показывает информацию о типе буферного пула для каждого из них. Синтаксис команды следующий:
proutil db-name -C viewb2
В отчете будет указан тип буферного пула для каждой области хранения и для каждого объекта в этой области. Поле «Object Enablement» будет иметь одно из двух значений, «Default» или «Alternate». Значение «Default» означает, что объект наследует тип буферного пула от области, в которой он размещен. А значение «Alternate» означает, что объект использует Альтернативный буферный пул независимо от типа буферного пула области. На уровне объектов значение «Alternate» возможно только для объектов, размещенных в области хранения с типом SAT-II.
Индексы и LOB-поля сопровождаются в описании указанием их родительского объекта, т.е. именем таблицы. Например, индекс Comments принадлежит таблице Feedback, значит в отчете это будет отображено следующим образом «Comments (PUB.Feedback)».
Ниже приведена часть отчета, полученного с помощью VIEWB2:
Area 12: "Misc" - Alternate Buffer Pool Object Enablement Type Object Id: Name ----------------- ------ --------------- Default Table 5: PUB.Salesrep Default Table 7: PUB.LocalDefault Default Table 8: PUB.RefCall Default Index 8: InvoiceNum (PUB.Invoice) Default Index 9: CustNum (PUB.Invoice) Default Index 10: InvoiceDate (PUB.Invoice) Default Index 11: OrderNum (PUB.Invoice) Default Index 25: SalesRep (PUB.Salesrep) Default Index 26: State (PUB.State) Default Index 27: localdefnum (PUB.LocalDefault) Default Index 28: CallNum (PUB.RefCall) Default Index 29: CustNum (PUB.RefCall) Default Index 30: Sibling (PUB.RefCall) Default Index 31: Txt (PUB.RefCall) Default Index 32: Department (PUB.Feedback) Default Index 35: Contact (PUB.Feedback) Area 13: "TESTB2" - Alternate Buffer Pool Object Enablement Type Object Id: Name ----------------- ------ --------------- Default Table 1: PUB.Invoice Default Table 6: PUB.State Alternate Table 9: PUB.Feedback Area 14: "IDXB2" - Primary Buffer Pool Object Enablement Type Object Id: Name ----------------- ------ --------------- Alternate Index 33: Comments (PUB.Feedback) Alternate Index 34: Company (PUB.Feedback) Default Index 36: Rating (PUB.Feedback)
Обратите внимание на некоторые интересные моменты в отчете:
- Область 13 использует Альтернативный буферный пул. Таблица Feedback на уровне объекта тоже использует Альтернативный пул, но таблицы Invoice и State имеют значение Default. Это не означает, что таблицы работают с первичным буферным пулом. Все объекты области TESTB2 используют Альтернативный буферный пул.
- Область 14 использует первичный буферный пул, но два индекса в ней (Comments и Company) работают с Альтернативный буферным пулом, в то время как индекс Rating наследует тип буферного пула от области, т.е. первичный буферный пул.
Формирование Альтернативного буферного пула
Как только определены объекты или области, которые будут использовать Альтернативный буферный пул, необходимо позаботиться о том, чтобы выделить часть разделяемой памяти для этого пула. Сделать это можно с помощью параметра запуска базы данных <-B2 n>, где n – это количество блоков. Но помните, что сумма параметров <-B> и <-B2> не должна превышать максимально возможный размер разделяемой памяти, который для 32-битных систем равен 125000000 блоков, а для 64-битных – 1000000000 блоков. Изменить размер существующего Альтернативного буферного пула можно в online с помощью утилиты PROUTIL INCREASETO.
Оптимальное значение размера Альтернативного буферного пула должно определяться индивидуально для каждого приложения, и основываться на мониторинге, выполненного в течение определенного времени.
Имейте в виду, нельзя использовать Альтернативный буферный пул на базе target, формируемой механизмом OpenEdge Replication.