Статьи

02.05.2024, 02:02
Меню сайта

Категории раздела
DB2 [6]
MSSQL [0]

Поиск
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Базы данных » DB2

Табличные пространства

Введение

Начинающим или только обучающимся администраторам баз данных DB2 вопросы, которые приходится решать при проектировании и оптимизации производительности новой базы данных, могут показаться довольно запутанными. В данной статье рассматриваются две области, в которых администратор сталкивается с важным выбором: табличные пространства и буферные пулы. Организация и настройка табличных пространств и буферных пулов могут заметно влиять на качество работы сервера DB2.

В примерах для этой статьи используется версия DB2 9.7, Enterprise Server Edition. Большинство примеров, если нет других указаний, применимо также и к более ранним версиям.

В статье рассматриваются следующие темы:

Табличные пространства

Все данные базы данных хранятся в табличных пространствах. Табличное пространство можно представить себе как дочерний элемент, для которого родительским элементом является база данных. При этом табличное пространство может быть дочерним элементом по отношению не более чем к одной базе данных. Поскольку табличные пространства используются различными способами, они классифицируются в соответствии со способами их применения и управления ими. Существует пять типов табличных пространств:

Табличное пространство каталога
В базе данных может присутствовать только одно табличное пространство каталога, создаваемое в ходе выполнения команды CREATE DATABASE. В DB2 табличное пространство каталога называется SYSCATSPACE и содержит таблицы системного каталога. Это табличное пространство создается всегда при создании базы данных.
Обычное табличное пространство
Обычные табличное пространство содержит все постоянные данные, в том числе обычные таблицы и индексы. В этом пространстве можно хранить также и длинные данные, такие как большие объекты данных (Large Objects - LOB), если они не выделены в особое табличное пространство. Таблицу и ее индексы можно разделить на отдельные обычные табличные пространства, если это пространства, управляемые базой данных (DMS) для несекционированных таблиц или пространства, управляемые системой (SMS) для секционированных таблиц. DMS и SMS описаны в разделе Управление табличным пространством. Примером обычного табличного пространства служит табличное пространство каталога. По умолчанию это единственное обычное табличное пространство, которое создается при создании базы данных.
Табличное пространство длинных данных
В табличном пространстве длинных данных хранятся все постоянные данные, как и в пространстве обычных таблиц, включая объекты LOB. Такие табличные пространства должны иметь тип DMS, который присваивается им по умолчанию. Таблица, созданная в табличном пространстве длинных данных, может быть больше таблицы в обычном табличном пространстве. Такая таблица поддерживает более 255 строк на страницу данных, что улучшает использование страниц данных. При создании базы данных DB2 создает одно табличное пространство длинных данных с именем USERSPACE1.
Временные системные табличные пространства
Временные системные табличные пространства используются для хранения внутренних временных данных, необходимых для операций SQL, например, для сортировки, преобразования таблиц, создания индексов и объединения таблиц. База данных должна иметь хотя бы одно такое пространство. По умолчанию вместе с базой данных создается временное системное табличное пространство TEMPSPACE1.
Временные табличные пространства пользователя
Временные табличные пространства пользователя служат для хранения объявленных глобальных временных таблиц. При создании базы данных временные табличные пространства пользователя не создаются. Для определения декларированных временных таблиц требуется, чтобы существовало хотя бы одно временное табличное пространство пользователя. Временные табличные пространства пользователя не обязательны. По умолчанию они не создаются.

Управление табличными пространствами

Существует два способа управления табличными пространствами:

Пространство, управляемое системой (SMS)
Табличными пространствами SMS управляет операционная система. Контейнеры определяются как обычные файлы операционной системы, и доступ к ним осуществляется с помощью вызовов операционной системы. Это означает, что следующие операции выполняются с помощью обычных функций операционной системы:
  • операции ввода-вывода буферизуются операционной системой;
  • выделение пространства осуществляется в соответствии с соглашениями операционной системы;
  • табличное пространство автоматическое расширяется по мере необходимости.

Однако из табличных пространств SMS нельзя удалять контейнеры, а добавление новых контейнеров ограничено секционированными базами данных. Начиная с DB2 версии 9.1 единственным табличным пространством SMS, которое создается по умолчанию при создании базы данных, является TEMPSPACE1.

Пространство, управляемое базой данных (DMS)
Табличными пространствами DMS управляет DB2. Контейнеры можно определять как файлы (целиком занимающие размер, выделенный при создании табличного пространства) или как устройства. DB2 управляет вводом-выводом в той мере, в какой это позволяют метод выделения и операционная система. С помощью команды ALTER TABLESPACE контейнеры можно расширять. Неиспользуемые фрагменты контейнеров DMS можно освобождать (начиная с версии 8).

В листинге 1 показано, как увеличить размеры контейнера:


Листинг 1. Увеличение размера контейнера
ALTER TABLESPACE TS1 RESIZE (FILE '/conts/cont0' 2000, 
 DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000)

Для увеличения или сокращения размера контейнера можно использовать также такие параметры, как EXTEND или REDUCE.

Создание и просмотр табличных пространств

При создании базы данных создаются три табличных пространства (SYSCATSPACE, TEMPSPACE1 и USERSPACE1). В листинге 2 показано, как создать базу данных с именем testdb, подключиться к ней и получить список табличных пространств с помощью командного окна DB2 или командной строки UNIX.


Листинг 2. Создание, подключение и вывод списка
CREATE DATABASE testdb 
CONNECT TO testdb 
LIST TABLESPACES

В листинге 3 приведен пример выходных данных команды LIST TABLESPACES.


Листинг 3. Выходные данные команды LIST TABLESPACES
 Tablespaces for Current Database

 Tablespace ID = 0
 Name = SYSCATSPACE
 Type = Database managed space
 Contents = All permanent data. Regular table space.
 State = 0x0000
 Detailed explanation:
 Normal

 Tablespace ID = 1
 Name = TEMPSPACE1
 Type = System managed space
 Contents = System Temporary data
 State = 0x0000
 Detailed explanation:
 Normal

 Tablespace ID = 2
 Name = USERSPACE1
 Type = Database managed space
 Contents = All permanent data. Large table space.
 State = 0x0000
 Detailed explanation:
 Normal

В листинге 3 команда CREATE DATABASE автоматически создает три табличных пространства. Режим создания табличных пространств по умолчанию можно переопределить, включив в команду параметры табличных пространств, но в любом случае при создании базы данных необходимо создать табличное пространство каталога и хотя бы одно обычное или длинное и одно временное системное табличное пространство. Дополнительные табличные пространства любого типа (за исключением табличного пространства каталога) можно создавать с помощью команды CREATE DATABASE или, позднее, с помощью команды CREATE TABLESPACE.

Контейнеры

Каждое табличное пространство содержит один или несколько контейнеров. Контейнер опять-таки можно представить как дочерний элемент, для которого родительским является табличное пространство. Каждый контейнер может принадлежать только одному табличному пространству, тогда как табличное пространство может содержать несколько контейнеров. В табличных пространствах DMS можно добавлять и удалять контейнеры, а также менять размеры контейнеров. Добавлять контейнеры к табличным пространствам SMS можно только в секционированных базах данных, в раздел, где еще нет контейнера, выделенного для табличного пространства. При добавлении новых контейнеров выполняется автоматическое перераспределение данных по всем контейнерам. Перераспределение не мешает одновременному доступу к базе данных.

Параметры табличных пространств

Во время создания табличных пространств или позднее можно задать несколько параметров с помощью оператора ALTER TABLESPACE. Эти параметры перечислены в следующем списке.

Размер страницы
Определяет размер страниц, используемых для табличного пространства. Поддерживаются форматы 4K, 8K, 16K и 32K. Размер страниц ограничивает длину строк и число столбцов таблиц, которые можно разместить в табличном пространстве, в соответствии с предельными значениями, приведенными в таблице 1.

Таблица 1. Влияние размера страниц
Размер страницыПредельный размер строкиПредельное число столбцовМаксимальная емкость
(табличное пространство DMS)
4 KБ4 00550064 ГБ
8 KБ8 1011 012128 ГБ
16 KБ16 2931 012256 ГБ
32 KБ32 6771 012512 ГБ

Табличные пространства ограничены 16384 страницами, поэтому, чем больше размер страницы, тем больше емкость табличного пространства.

Размер экстента
Число страниц в контейнере, при достижении которого осуществляется переход к следующему контейнеру. Система управления базой данных циклически перебирает контейнеры по мере записи данных. Этот параметр учитывается только при наличии для табличного пространства нескольких контейнеров.
Размер предварительной выборки
Количество страниц, считываемых из табличного пространства при выполнении предварительной выборки данных. Предварительная выборка заключается в считывании данных, необходимых для выполнения запроса, до того, как они будут указаны в запросе, чтобы не тратить время на операции ввода-вывода при обработке запроса. Предварительная выборка выполняется системой управления базы данных, когда та решает, что имеет место последовательный ввод-вывод и можно повысить производительность за счет предварительной выборки.
Непроизводительные издержки и скорость передачи данных
Определяет затраты на ввод-вывод при оптимизации запросов. Оба значения измеряются в миллисекундах и должны быть усреднены для всех контейнеров. Непроизводительные издержки - это время, связанное с операциями контроллера ввода-вывода, временем поиска данных на диске и задержкой вращения диска. Скорость передачи - время, необходимое для считывания в память одной страницы. По умолчанию для базы данных, созданной в DB2 версии 9, используются значения 7,5 мс и 0,06 мс соответственно. Для базы данных, перенесенной из предыдущей версии DB2, значения по умолчанию составляют 12,67 мс и 0,18 мс соответственно. Эти значения можно рассчитать, основываясь на спецификациях оборудования.

Пример оператора CREATE TABLESPACE

В листинге 4 создается обычное табличное пространство с использованием всех параметров настройки из этой статьи.


Листинг 4. Создание табличного пространства
CREATE TABLESPACE USERSPACE3 
PAGESIZE 8K 
MANAGED BY SYSTEM 
USING ('d:\usp3_cont1', 'e:\usp3_cont2', 'f:\usp3_cont3') 
EXTENTSIZE 64 
PREFETCHSIZE 32 
BUFFERPOOL BP3 
OVERHEAD 7.5 
TRANSFERRATE 0.06

Как просматривать атрибуты табличного пространства и контейнеров

Задание параметра SHOW DETAIL для команды LIST TABLESPACES приводит к отображению дополнительной информации: LIST TABLESPACES SHOW DETAIL.

В листинге 5 показан результат для табличного пространства USERSPACE1. По умолчанию будут перечислены три табличных пространства, созданных при создании базы данных.


Листинг 5. Выходные данные команды LlST TABLESPACES SHOW DETAIL
 Tablespaces for Current Database

 Tablespace ID = 2
 Name = USERSPACE1
 Type = Database managed space
 Contents = All permanent data. Large table space.
 State = 0x0000
 Detailed explanation:
 Normal
 Total pages = 8192
 Useable pages = 8160
 Used pages = 96
 Free pages = 8064
 High water mark (pages) = 96
 Page size (bytes) = 4096
 Extent size (pages) = 32
 Prefetch size (pages) = 32
 Number of containers = 1

Для отображения данных о контейнерах, необходимых для использования табличного пространства с идентификатором Tablespace ID из приведенного выше листинга, введите LIST TABLESPACE CONTAINERS FOR 2.


Листинг 6. Выходные данные команды LlST TABLESPACES CONTAINERS
 Tablespace Containers for Tablespace 2

Container ID = 0 
Name = C:\DB2\NODE0000\SQL00004\SQLT0002.0 
Type = Path

Команда выдает список всех контейнеров для указанного табличного пространства. Путь, представленный в листинге 6, указывает на физическое местоположение контейнеров.

Категория: DB2
Просмотров: 5746