- •Санкт-Петербург
- •Часть I. Общие сведения о субд Microsoft sql Server 2000 5
- •Часть II. Администрирование sql Server 2000 116
- •Введение
- •Часть I. Общие сведения о субд Microsoft sql server 2000
- •1.1. Возможности sql server 2000
- •1.2. Компоненты sql server 2000
- •Утилита Server Network
- •Встроенные мастера sql Server 2000
- •1.3. Архитектур бдв среде sql Server 2000
- •Логические компоненты базы данных
- •Режимы сопоставления
- •Идентификаторы пользователей, учетные имена, роли и группы
- •Физическая структура базы данных Страницы и экстенты
- •Файлы и группы файлов баз данных
- •Протокол tds
- •Архитектура обработчика запросов
- •Архитектура памяти
- •Архитектура ввода-вывода
- •Архитектура полнотекстовых запросов
- •Организация транзакций
- •Хранилища данных и оперативная аналитическая обработка (olap)
- •Oltp-системы
- •Olap-системы
- •Архитектура разработки приложений
- •Язык баз данных
- •1.4. Инструменты программирования sql server
- •Окно Query
- •Панель Results
- •Вкладка Grids
- •Окно Object Browser
- •Окно отладчика Transact-sql
- •Окно Object Search
- •Утилита командной строки isql
- •Утилита командной строки osql
- •1.5.Язык transact - sql
- •Операторы Transact-sql
- •Язык определения данных
- •Язык управления данными
- •Язык манипулирования данными
- •Идентификаторы
- •Переменные
- •Функции
- •Встроенные функции
- •Функции получения набора строк
- •Агрегатные функции
- •Скалярные функции
- •Скалярные функции
- •Табличные функции
- •Детерминированность функций
- •Типы данных
- •Выражения
- •Использование операторов в выражениях
- •Элементы языка управления ходом выполнения
- •Обработка оператора select
- •Обработка других операторов
- •Команда go
- •Обработка пакета
- •Хранимые процедуры и триггеры
- •Исполнение хранимых процедур и триггеров
- •Сценарии Transact-sql
- •Часть II. Администрирование sql server 2000
- •2.1. Создание и управление бд sql server 2000
- •Методы создания баз данных sql Server
- •Оператор create database
- •Управление базой данных sql Server
- •Просмотр сведений о базе данных
- •Модификация базы данных
- •Настройка параметров базы данных
- •Удаление базы данных sql Server
- •2.2. Импорт и экспорт данных
- •Использование утилиты Ьср и оператора bulk insert
- •Использование различных форматов данных
- •Использование dts
- •Инструменты dts
- •Задачи dts
- •Соединения dts
- •2.3. Копирование в среде sql server 2000
- •Терминология резервного копирования
- •Резервное копирование с использованием Transact-sql
- •Полное резервное копирование базы данных
- •Резервное копирование файла или группы файлов
- •Репликация
- •2.4. Восстановление в среде sql server 2000 Определение последовательности восстановления данных
- •2.5. Репликация Процесс репликации
- •Репликация моментальных снимков
- •2.6. Проверка подлинности в sql server 2000
- •Проверка подлинности средствами Windows
- •Проверка подлинности средствами sql Server 2000
- •Сравнение типов проверки подлинности
- •Клиентские сетевые библиотеки и проверка подлинности.
- •Выбор режима проверки подлинности для sql Server 2000
- •Проверка подлинности Windows
- •Смешанный режим проверки подлинности
- •Делегирование учетной записи пользователя
- •2.7.Разрешение уровня сервера
- •Фиксированные роли базы данных
- •2.8.1. Оптимизация работы sql server 2000
- •2.8.1. Конфигурация сети
- •2.8.2. Индексы
- •Назначение и структура индексов
- •Кластерные индексы
- •Не кластерные индексы
- •Свойства индекса
- •Уникальный индекс.
- •Составной индекс
- •Коэффициент заполнения и разреженность индекса
- •Порядок сортировки
- •2.8.3. Триггеры
- •Исполнение триггеров
- •2.8.4. Хранимые процедуры
- •Производительность
- •Временные хранимые процедуры
- •Расширенные хранимые процедуры
- •Удаленные хранимые процедуры
- •2.8.5. Представления
- •2.8.6. Мониторинг
- •Утилита System Monitor
- •Утилита Task Manager
- •Утилита sql Profiler
- •Утилита sql Query Analyzer
- •Использование Transact-sql
- •Системные хранимые процедуры
- •Команды dbcc
- •Встроенные функции
- •Флаги трассировки
- •Использование snmp
- •2.9. Системы безопасности
- •Шифрование объектов
- •Список литературы
Коэффициент заполнения и разреженность индекса
При добавлении строки в таблицу SQL Server должен найти место для новой строки. Операция добавления совершается при исполнении оператора INSERT или при обновлении ключа кластерного индекса с помощью оператора UPDATE. Если в таблице нет кластерного индекса, запись и страница индекса помещаются в любое доступное место в куче. Если в таблице есть кластерный индекс, SQL Server находит в В-дереве подходящую страницу индекса и размещает запись в соответствии с порядком сортировки. Если страница индекса уже заполнена, то она делится пополам (половина ее страниц остается в исходной странице индекса, а другая половина — переносится на следующую страницу индекса). Если вставленная строка достаточно велика, может потребоваться дополнительное разделение страниц, однако операция разделения страницы сложна и требует много ресурсов. Чаще всего разделение страниц выполняется на листовом уровне. Чтобы уменьшить число операций разделения страницы, следует задать степень заполнения страниц индекса на момент их создания. Этот параметр называется коэффициентом заполнения. По умолчанию он равен нулю. Это означает, что при создании страницы для существующих данных, она заполняется полностью. Значения коэффициента заполнения 0 и 100 аналогичны. Можно задать глобальный коэффициент заполнения по умолчанию для сервера в целом средствами хранимой процедуры sp_configure или используя конструкцию FILL-FACTOR — для определенного индекса. В системах обработки транзакций с высокой пропускной способностью допустимо также выделить дополнительное место для страниц индекса промежуточного уровня. Дополнительное место, которое выделяется для индексных страниц промежуточного уровня, определяется разреженностью индекса.
Порядок сортировки
При создании индекс упорядочивается по возрастанию. Это касается как кластерных, так и не кластерных индексов. Кластерный индекс определяет порядок сортировки таблицы. Рассмотрим оператор SELECT:
SELECT emp_id, Iname, job_lvl FROM employeeOI
WHERE hire_date < (GETDATEO - 30) AND job_lvl >= 100
Обратите внимание, что порядок сортировки не задан. Из предыдущего раздела вы знаете, что оптимизатор запросов формирует результат этого оператора с помощью составного индекса. Этот составной индекс — не кластерный, а его первым столбцом является Iname. Порядок сортировки не задан при создании индекса, поэтому результат упорядочивается по возрастанию, начиная со столбца Iname. Конструкция ORDER BY не используется для экономии вычислительных ресурсов. Но получаемый результат, тем не менее, упорядочен (сначала по значениям Iname). Порядок сортировки определяет индекс, примененный для возврата результата (если не определена конструкция ORDER BY или не задан явно индекс, используемый оператором SELECT). Если оптимизатор запросов возвращает результат с помощью кластерного индекса, то именно кластерный индекс определяет порядок сортировки результата, который совпадает с порядком страниц таблицы. Следующий оператор Transact-SQL использует для возврата результата, упорядоченного по возрастанию, кластерный индекс столбца Emp_ID:
SELECT emp^id, Iname, fname FROM employeeOI
