- •Санкт-Петербург
- •Часть 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. Системы безопасности
- •Шифрование объектов
- •Список литературы
2.8.1. Конфигурация сети
Служба SQL Server настраивается и регулируется автоматически. Хотя ручная настройка в некоторых средах может повысить производительность, параметры настройки по умолчанию обычно обеспечивают максимальную производительность SQL Server 2000. Чтобы оптимизировать работу службы SQL Server можно настраивать параметры:
пользовательских соединений;
базы данных;
памяти;
процессора;
сервера.
Ручная настройка параметров может привести и к снижению производительности. Используйте ее с максимальной осторожностью и проверяйте результат внесенных изменений, выполняя мониторинг производительности.
Можно просматривать и изменять большинство параметров с помощью SQL Server Enterprise Manager. Чтобы просмотреть или изменить все настройки, воспользуйтесь системной хранимой процедурой sp_configure. При вызове без параметров она возвращает все текущие значения параметров конфигурации. Некоторые параметры настройки можно просмотреть только при помощи параметра Show Advanced Options. Для динамически настраиваемых параметров указываются нулевые значения. Если вы изменили какой-либо параметр с помощью хранимой процедуры sp_configure, выполните оператор RECONFIGURE или перезапустите службу SQL Server, чтобы система начала использовать новое значение параметра. Если вы изменили параметр с помощью SQL Server Enterprise Manager, система выдаст запрос на перезапуск SQL Server, чтобы изменения вступили в силу.
У каждого параметра есть текущее и заданное значение. Если параметр изменен, но не активизирован, текущее и заданное значения будут различаться.
2.8.2. Индексы
Структура индексов ориентирована на быстрый возврат результирующих наборов. SQL Server поддерживает два типа индексов: кластерные и не кластерные. Индексы могут быть созданы для одного или нескольких столбцов таблицы или представления. Индексированные таблицы поддерживаются всеми редакциями SQL Server 2000, а индексированные представления — только SQL Server Enterprise Edition и SQL Server Developer Edition. Интенсивность использования системных ресурсов и производительность при поиске данных зависит от свойств индекса. Оптимизатор запросов использует индекс, если это позволяет повысить производительность запроса. В этом занятии рассказано о различных типах индексов, их структуре и свойствах.
Назначение и структура индексов
В SQL Server индекс помогает механизму БД найти нужную запись; он напоминает по своему назначению предметный указатель книги, по которому читатель быстро отыскивает нужную информацию. Не будь индексов, SQL Server пришлось бы при поиске записей, соответствующих запросу, просматривать все записи таблицы по порядку (выполнять сканирование таблицы). Индекс БД формируется из значений одного или нескольких столбцов таблицы (которые в этом случае называются ключом индекса) и указателей на соответствующие записи таблицы. При исполнении запроса с ключом индекса оптимизатор запросов использует индекс для поиска записей, соответствующих запросу.
Диспетчер индексов (SQL Server Index Manager) структурирует индекс в виде сбалансированного дерева, или В-дерева (Balanced tree, B-tree), которое по виду напоминает перевернутое дерево: его корень располагается сверху, а листовой уровень — внизу; между ними расположен ряд промежуточных уровней. Каждый объект в структуре дерева — это группа отсортированных ключей индекса, которая называется страницей индекса.
Структура В-дерева способствует повышению скорости и согласованности при исполнении запросов, тщательно балансируя ширину и глубину дерева по мере увеличения индекса. Упорядочение индекса по значениям его ключей также повышает производительность запросов. SQL Server начинает исполнение всех запросов на поиск данных с корня В-дерева, затем он проходит дальше, пока не достигнет листового уровня. Ширина и глубина дерева зависит от числа табличных записей и размера ключа индекса. Последний называется шириной ключа. Дерево, созданное на таблице со множеством записей и большим ключом индекса, получается широким и глубоким. Чем меньше дерево, тем быстрее возвращается результат поиска.
Для оптимальной производительности запросов следует создавать индексы на тех столбцах таблицы, которые часто применяются в запросах. Например, пользователи могут строить свои запросы к таблице Customers на основе фамилии или идентификатора покупателя. Поэтому для этой таблицы следует создать два индекса: индекс фамилий и индекс идентификаторов. Для эффективного поиска записей оптимизатор запросов использует индекс, соответствующий запросу. При исполнении следующего запроса оптимизатор по всей вероятности воспользуется индексом идентификаторов:
SELECT * FROM Customers WHERE customerid = 798
He стоит создавать индекс для каждого столбца таблицы, поскольку увеличение числа индексов негативно отражается на производительности. Большинство БД динамичны, то есть в них постоянно происходит добавление, удаление и изменение записей. При модификации индексированной таблицы индекс необходимо обновлять. Если этого не делать, он быстро теряет эффективность. Поэтому такие события, как добавление, обновление и удаление, заставляют диспетчер индексов обновлять индексы таблицы. Чем больше таблица, тем больше построенный на ней индекс. Прежде чем создавать индекс, следует убедиться, что планируемый выигрыш в производительности запросов перевесит дополнительную затрату ресурсов компьютера на сопровождение индекса.
Типы индексов
Существует два типа индексов: кластерные и некластерные. Структура обоих типов — В-дерево. На листовом уровне В-дерева кластерный индекс содержит записи таблицы, а некластерный — указатели на записи. Если на таблице построен кластерный индекс, то некластерный можно использовать при поиске данных как вспомогательный. В большинстве случаев для таблицы сначала следует создавать кластерный индекс, а затем — один или несколько не кластерных.
