- •Глава 13. Семантическое моделирование
- •Часть III Проектирование базы данных
- •Часть IV
- •14.1. Введение
- •14.2. Транзакции
- •14.3. Восстановление транзакции
- •14.4. Восстановление системы
- •14.5. Восстановление носителей
- •14.6. Двухфазная фиксация
- •14.7. Поддержка языка sql
- •14.8. Резюме
- •15.1. Введение
- •15.2. Три проблемы параллельности
- •15.3. Блокировка
- •15.4. Устранение трех проблем параллельности
- •15.5. Взаимная блокировка
- •15.6. Упорядочиваемость
- •15.7. Уровни изоляции
- •15.8. Блокировка намерения
- •15.9. Средства языка sql
- •15.10. Резюме
- •Часть V
- •16.1. Введение
- •16.2. Избирательная схема управления доступом
- •16.3. Мандатная схема управления доступом
- •16.4. Статистические базы данных
- •16.5. Шифрование данных
- •16.6. Средства языка sql
- •16.7. Резюме
- •17.1. Введение
- •17.2. Пример выполнения оптимизации
- •17.3. Оптимизация запросов
- •17.4. Преобразование выражений
- •17.5. Статистические показатели базы данных
- •17.6. Стратегия по принципу "разделяй и властвуй"
- •17.7. Реализация реляционных операторов
- •17.8. Резюме
- •18.1. Введение
- •18.2. Обзор концепции трехзначной логики
- •18.3. Некоторые следствия изложенной схемы
- •18.4. Отсутствующие значения и ключи
- •18.5. Внешнее соединение
- •18.6. Специальные значения
- •18.7. Поддержка неопределенных значений в языке sql
- •18.8. Резюме
- •Глава 19
- •19.1. Введение
- •19.2. Иерархия типов
- •19.3. Полиморфизм и заменимость
- •19.4. Переменные и операция присвоения
- •19.5. Специализация по ограничениям
- •19.6. Операции сравнения
- •19.7. Операторы, версии и сигнатуры
- •19.8. Является ли окружность эллипсом
- •19.9. Пересмотр специализации ограничением
- •19.10. Резюме
- •20.1. Введение
- •20.2. Предварительные сведения
- •20.3. Двенадцать основных целей
- •1. Локальная независимость
- •2. Отсутствие опоры на центральный узел
- •3. Непрерывное функционирование
- •4. Независимость от расположения
- •5. Независимость от фрагментации
- •6. Независимость от репликации
- •7. Обработка распределенных запросов
- •8. Управление распределенными транзакциями
- •9. Аппаратная независимость
- •10. Независимость от операционной системы
- •11. Независимость от сети
- •12. Независимость от типа субд
- •20.4. Проблемы распределенных систем
- •Транзакция т1х
- •20.5. Системы "клиент/сервер"
- •20.6. Независимость от субд
17.5. Статистические показатели базы данных
На стадиях 3 и 4 общего процесса оптимизации (называемых стадиями выбора пути доступа) используются статистические показатели базы данных, сохраняемые в ее ка- талоге (ниже кратко описаны способы их применения). В демонстрационных целях ниже кратко рассматриваются (с небольшими дополнительными комментариями) некоторые из основных статистических показателей, используемых в двух коммерческих продук- тах — СУБД DB2 и INGRES. Приведем некоторые из основных статистических показа- телей, применяемых в СУБД DB22.
■ Для каждой базовой таблицы фиксируются следующие показатели:
кардинальность;
количество страниц внешней памяти, занятых таблицей; " доля табличного пространства, занимаемого таблицей.
■ Для каждого столбца каждой базовой таблицы фиксируются следующие показатели:
количество различных значений в столбце;
второе наибольшее значение в столбце;
второе наименьшее значение в столбце;
десять значений в столбце (только для индексированных столбцов), которые чаще всего встречаются, а также количество вхождений каждого из этих зна- чений.
■ Для каждого индекса фиксируются следующие показатели:
" индикатор, указывающий, является ли индекс кластеризованным (т.е. индексом, в котором логический порядок значений ключа совпадает с физическим поряд- ком их размещения в таблице);
2 Так как обе названные СУБД поддерживают стандартный язык SQL, при их обсуждении вместо терминов "переменная-отношение" и "атрибут" будут использоваться термины "таблица" и "столбец" соответственно Также заметим, что в обеих СУБД предполагается, что каждая базовая таблица должна отображаться в одну хранимую таблицу.
■ для кластеризованных индексов — доля индексированной таблицы, находящей- ся в кластеризующей последовательности;
количество листовых страниц в индексе;
количество уровней в индексе.
Замечание. Перечисленные выше статистические показатели не обновляются при ка- ждом обновлении базы данных из-за больших накладных расходов, связанных с их вы- числением. Вместо этого статистические показатели обновляются выборочно, с помо- щью системной утилиты RUNSTATS, которая запускается по требованию администратора базы данных, например после реорганизации базы данных. Аналогичное утверждение применимо и к большинству других коммерческих продуктов, в том числе к системе INGRES, где соответствующая утилита называется OPTIMIZEDB.
Перечислим некоторые из основных статистических показателей базы данных, нака- пливаемых в СУБД INGRES.
Замечание. В системе INGRES индекс рассматривается как частный случай хранимой таблицы. Поэтому приведенные ниже статистические показатели для базовых таблиц и столбцов вычисляются также для индексов.
■ Для каждой базовой таблицы фиксируются следующие показатели:
кардинальность;
количество первичных страниц для таблицы;
количество страниц переполнения для таблицы.
■ Для каждого столбца в каждой базовой таблице фиксируются следующие показатели:
количество различных значений в столбце;
максимальное, минимальное и среднее значения для столбца;
реальные значения в столбце и частота их вхождений.