Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Индексы

Содержание

Физическое хранение данныхОсновной единицей хранилища данных в SQL Server является страница. Место на диске для размещения файла данных в базе данных, логически разделяется на страницы с непрерывным перечислением от 0 до n. Дисковые операции ввода-вывода выполняются
Индексы Физическое хранение данныхОсновной единицей хранилища данных в SQL Server является страница. Место Страницы и экстентыВ SQL Server размер страницы составляет 8 КБ.  1 Схема блока с таблицей  смещения записей Поддержка больших строкЖелательно, чтобы строка целиком хранилась в одной странице (IN_ROW_DATA)Часть очень Длина строки > 8 060 байт SQL Server динамически перемещает один или Типы запросовТочечный запрос - результат 1 запись.Набор из нескольких записей, относительно небольшое Heap (куча) сканирование таблицы (full scan) Таблица, в которой записи упорядочены по значению ключаПолезны при частых интервальных запросахlog2m B-деревоТаблица упорядочена по значению ключаДля каждого блока данных определяем пару: минимальное значение В-деревоИмеет внутренние (индексные) и листовые страницыЛистовые вершины находятся на самом нижнем уровне В-деревоВ-дерево – сбалансированная структура, т.е. от корня до любой листовой страницы одинаковое Поиск Вставка в В-деревоПроизводим поиск по значению вставляемого ключа.Если в блоке есть место, ИндексИзбыточная структура, предназначенная для ускорения поиска.Основное назначение:увеличение скорости доступа к даннымподдержка уникальности данных Поиск с помощью индекса:На точное значениеНа интервалНа значение нескольких атрибутов Примеры предикатов без использования индексаWHERE IdNum + 1 = 101WHERE ABS(IdNum) = Исправленные примеры предикатов с использованием индексаWHERE IdNum = 100WHERE IdNum IN (-100, Способы определения индекса:автоматическое создание индекса при создании первичного ключа;автоматическое создание индекса при Создание индексаCREATE [ UNIQUE ]  [ CLUSTERED | NONCLUSTERED ] Характеристики индексакластеризованный или некластеризованный;уникальный или неуникальный;с одним или несколькими столбцами;порядок по возрастанию CLUSTEREDИспользует возможность физического индексирования данныхВ результате будут отсортированы данные в самой таблице Кластерный индексКластерный индекс обеспечивает самый быстрый поиск по заданному ключуСтолбцы типа UNIQUEИспользуется при необходимости ввода в определенное поле только уникальных значений. В индексируемом Ключ кластерного индекса: желательноУникальныйУзкий (как можно меньше байт)Статичный (редко меняется) Кластерные индекс для неуникальных значений Кластерный индекс Некластерный индексСтроим по тем полям, которые часто используются при поиске.Таблицы могут содержать Некластерный индексВ индексный файл для каждой записи помещаем пару: значение ключа + Некластерный индекс ссылается на значения кластерного ключаУникальный КК- если кластерный ключ не Некластерный индекс Поиск с помощью В-дерева Составной ключИндекс может быть создан на основании нескольких полей.В один ключ составного Составной ключРасполагайте в начале ключи индекса, которые часто используются в WHERE выражениях.Старайтесь Ограничения по длинеСуммарная длина ключа индекса не должна превышать 900 байтов. Если Выбор столбцовСледует создавать некластеризованные индексы для всех столбцов, которые часто используются в Примеры предикатов с использованием составного индексаCREATE CLUSTERED INDEX Ind1 ON Table1 (Name, Примеры предикатов без использования индексаCREATE CLUSTERED INDEX Ind1 ON Table1 (Name, IdNum)Where Покрывающий индексЕсли все столбцы запросы входят в состав ключа в индексе, то Включенные столбцы для некластеризованных индексовМожно добавлять неключевые столбцы к конечному уровню некластеризованного Отфильтрованные индексыОтфильтрованный индекс - некластеризованный индекс, построенный по некоторому подмножеству значений ключа. Может Отфильтрованные индексыИндекс обслуживается только в случае, если инструкции языка обработки данных (DML) Отфильтрованные индексыРазреженные столбцы, содержащие небольшое количество не NULL значений.Разнородные столбцы, содержащие категории Отфильтрованные индексыCREATE NONCLUSTERED INDEX Ind2  ON Production.Materials (CmpD, StartDate)  WHERE Индексы - недостаткиИндексы занимают дополнительное место на диске и в оперативной памяти. Не строить лишние индексы:Большое количество индексов в таблице снижает производительность инструкций INSERT, FILLFACTORКоэффициент заполнения - при создании или перестроении индекса позволяет зарезервировать место на Индексы для маленьких таблицИндексирование маленьких таблиц может оказаться не лучшим выбором, так Представления WITH SCHEMABINDINGSCHEMABINDING  Привязывает представление к схеме базовой таблицы или таблиц=> базовая Индексированное представлениеWITH SCHEMABINDING – можно построить индексы, первым – кластерный.Тогда представление будет Индексное представлениеМожет дать значительное улучшение производительности, если представление содержит агрегаты, объединения таблиц Советы по использованию индексовПеред построением нового индекса убедитесь, что такого еще нет.Уникальность СтатистикаДата и время последнего обновления статистики. Общее число строк в таблице или СтатистикаПосмотреть статистикуDBCC SHOW_STATISTICS  (table_or_indexed_view_name , index_name) Обновить статистикуUPDATE STATISTICS table_or_indexed_view_name index_name ФрагментацияПри INSERT блок делится на дваПри UPDATE может увеличиться длина записиПри DELETE Выявление фрагментацииselect *  from sys.dm_db_index_physical_stats (DB_ID(‘DB_name') ,OBJect_ID('table') , NULL , NULL  , 'DETAILED') Параметрыavg_fragmentation_in_percent Процентная доля логической фрагментации (неупорядоченные страницы в индексе).fragment_count Число фрагментов (физически Перестройка индекса Рекомендации – 1 Создавайте кластерный индекс для каждой таблицы.Удаляйте лишние индексы.Постарайтесь создать Рекомендации – 2 Создавайте индекс для столбцов, которые часто используются в JOIN’ах.Создавайте Рекомендации – 3 Не используйте Identity в качестве первичного ключа (запись всегда Виды индексов:B-деревьяHash-индексыИндексы на основе битовых картR-деревьяМногомерные индексы
Слайды презентации

Слайд 2 Физическое хранение данных
Основной единицей хранилища данных в SQL

Физическое хранение данныхОсновной единицей хранилища данных в SQL Server является страница.

Server является страница. Место на диске для размещения файла

данных в базе данных, логически разделяется на страницы с непрерывным перечислением от 0 до n.
Дисковые операции ввода-вывода выполняются на уровне страницы. SQL Server считывает или записывает целые страницы данных.


Слайд 3 Страницы и экстенты
В SQL Server размер страницы составляет

Страницы и экстентыВ SQL Server размер страницы составляет 8 КБ. 1

8 КБ. 1 МБ = 128 страниц.
Заголовок 96

Б для хранения системных данных о странице (номер страницы, тип страницы, объем свободного места на странице и идентификатор объекта, которому принадлежит страница).
Экстент — это коллекция, состоящая из восьми физически непрерывных страниц; они используются для эффективного управления страницами. Все страницы хранятся в экстентах.



Слайд 4 Схема блока с таблицей смещения записей

Схема блока с таблицей смещения записей

Слайд 5 Поддержка больших строк
Желательно, чтобы строка целиком хранилась в

Поддержка больших строкЖелательно, чтобы строка целиком хранилась в одной странице (IN_ROW_DATA)Часть

одной странице (IN_ROW_DATA)
Часть очень большой строки может быть перемещена

на другую страницу.
Длина строки на странице < =8 060 байт (без учета данных «Текст/изображение»).
Может быть больше для таблиц, содержащих столбцы varchar, nvarchar, varbinary и пр. (varchar  (max) до 2 ГБ)

Слайд 6 Длина строки > 8 060 байт
SQL Server

Длина строки > 8 060 байт SQL Server динамически перемещает один

динамически перемещает один или более столбцов переменной длины на

страницы в единице распределения (ROW_OVERFLOW_DATA), начиная со столбца наибольшей длины. Если потом размер строки уменьшается, SQL Server динамически перемещает столбцы обратно на исходную страницу данных.
Поиск в неупорядоченном файле – в среднем половина файла m/2.


Слайд 7 Типы запросов
Точечный запрос - результат 1 запись.
Набор из

Типы запросовТочечный запрос - результат 1 запись.Набор из нескольких записей, относительно

нескольких записей, относительно небольшое их количество.
Ранговые запросы, где в качестве критериев

обычно указывается диапазон неких значений.
Минимумы-максимумы, группировки, сортировки.


Слайд 8 Heap (куча) сканирование таблицы (full scan)

Heap (куча) сканирование таблицы (full scan)

Слайд 9 Таблица, в которой записи упорядочены по значению ключа
Полезны

Таблица, в которой записи упорядочены по значению ключаПолезны при частых интервальных запросахlog2m

при частых интервальных запросах
log2m


Слайд 11 B-дерево
Таблица упорядочена по значению ключа
Для каждого блока данных

B-деревоТаблица упорядочена по значению ключаДля каждого блока данных определяем пару: минимальное

определяем пару: минимальное значение ключа и адрес блока.
Эти пары

также размещаем в блоках.
С новыми блоками поступаем так же, наращивая уровни, пока не появится уровень из одного блока.

Слайд 12 В-дерево
Имеет внутренние (индексные) и листовые страницы
Листовые вершины находятся

В-деревоИмеет внутренние (индексные) и листовые страницыЛистовые вершины находятся на самом нижнем

на самом нижнем уровне дерева, все остальные – внутренние

(индексные)
Индексные вершины содержат пары (key, adr) , где key – минимальное значение ключа в блоке adr.

Слайд 13 В-дерево
В-дерево – сбалансированная структура, т.е. от корня до

В-деревоВ-дерево – сбалансированная структура, т.е. от корня до любой листовой страницы

любой листовой страницы одинаковое число шагов
Высота B-дерева - logmN


Листовые страницы могут быть связаны одно- или двунаправленным списком.



Слайд 14 Поиск

Поиск

Слайд 15 Вставка в В-дерево
Производим поиск по значению вставляемого ключа.
Если

Вставка в В-деревоПроизводим поиск по значению вставляемого ключа.Если в блоке есть

в блоке есть место, то добавляем. Иначе создаем новый

блок, а записи старого распределяем поровну в два блока.
Так же поступаем со всеми уровнями.

Слайд 16 Индекс
Избыточная структура, предназначенная для ускорения поиска.
Основное назначение:
увеличение скорости

ИндексИзбыточная структура, предназначенная для ускорения поиска.Основное назначение:увеличение скорости доступа к даннымподдержка уникальности данных

доступа к данным
поддержка уникальности данных


Слайд 17 Поиск с помощью индекса:
На точное значение
На интервал
На значение

Поиск с помощью индекса:На точное значениеНа интервалНа значение нескольких атрибутов

нескольких атрибутов


Слайд 18 Примеры предикатов без использования индекса
WHERE IdNum + 1

Примеры предикатов без использования индексаWHERE IdNum + 1 = 101WHERE ABS(IdNum)

= 101
WHERE ABS(IdNum) = 100
WHERE datepart(year,Date_beg)=2014
WHERE Name LIKE ‘%ва%’
WHERE

DATEADD(DAY,7,Date_beg)>GETDATE()






Слайд 19 Исправленные примеры предикатов с использованием индекса
WHERE IdNum =

Исправленные примеры предикатов с использованием индексаWHERE IdNum = 100WHERE IdNum IN

100
WHERE IdNum IN (-100, 100)
WHERE Date_beg > ‘2013-12-31’ and

Date_beg < ‘2015-01-01’
WHERE Name =N‘Иванов’
WHERE Date_beg



Слайд 20 Способы определения индекса:
автоматическое создание индекса при создании первичного

Способы определения индекса:автоматическое создание индекса при создании первичного ключа;автоматическое создание индекса

ключа;
автоматическое создание индекса при определении ограничения целостности UNIQUE;
создание индекса

с помощью команды CREATE INDEX.


Слайд 21 Создание индекса
CREATE [ UNIQUE ] [ CLUSTERED |

Создание индексаCREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX

NONCLUSTERED ] INDEX index_name
ON (

column [ ASC | DESC ] [ ,...n ] )
[ INCLUDE ( column_name [ ,...n ] ) ]
[ WHERE ]
[ WITH ( [ ,...n ] ) ]

Слайд 22 Характеристики индекса
кластеризованный или некластеризованный;
уникальный или неуникальный;
с одним или

Характеристики индексакластеризованный или некластеризованный;уникальный или неуникальный;с одним или несколькими столбцами;порядок по

несколькими столбцами;
порядок по возрастанию или по убыванию в столбцах

индекса;
может содержать включенные столбцы;
полнотабличные или фильтруемые некластеризованные индексы.

Слайд 23 CLUSTERED
Использует возможность физического индексирования данных
В результате будут отсортированы

CLUSTEREDИспользует возможность физического индексирования данныхВ результате будут отсортированы данные в самой

данные в самой таблице согласно порядку этого индекса.
Добавление информации

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



Слайд 24 Кластерный индекс
Кластерный индекс обеспечивает самый быстрый поиск

Кластерный индексКластерный индекс обеспечивает самый быстрый поиск по заданному ключуСтолбцы

по заданному ключу
Столбцы типа ntext, text, image, varchar(max), nvarchar(max)

и varbinary(max) нельзя указывать в качестве ключевых столбцов индекса.
Длина полей, составляющих ключ, обратно пропорциональна скорости поиска.

Слайд 25 UNIQUE
Используется при необходимости ввода в определенное поле только

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

уникальных значений.
В индексируемом столбце желательно запретить хранение значений

NULL.
 


Слайд 26 Ключ кластерного индекса: желательно
Уникальный
Узкий (как можно меньше байт)
Статичный

Ключ кластерного индекса: желательноУникальныйУзкий (как можно меньше байт)Статичный (редко меняется)

(редко меняется)


Слайд 27 Кластерные индекс для неуникальных значений

Кластерные индекс для неуникальных значений

Слайд 28 Кластерный индекс

Кластерный индекс

Слайд 29 Некластерный индекс
Строим по тем полям, которые часто используются

Некластерный индексСтроим по тем полям, которые часто используются при поиске.Таблицы могут

при поиске.
Таблицы могут содержать до 249 некластерных индексов.
Не создавайте

индексы по столбцам с низкой избирательностью (selectivity) (пол, дни недели и т.д.)

Слайд 30 Некластерный индекс
В индексный файл для каждой записи помещаем

Некластерный индексВ индексный файл для каждой записи помещаем пару: значение ключа

пару: значение ключа + - адрес записи, если нет кластерного

индекса - указатель на значение записи из кластерного индекса
В новый индексный уровень помещаем минимальное значение ключа и адрес индексного блока.
Наращивая уровни, пока не появится уровень из одного блока.


Слайд 31 Некластерный индекс ссылается на значения кластерного ключа
Уникальный КК-

Некластерный индекс ссылается на значения кластерного ключаУникальный КК- если кластерный ключ

если кластерный ключ не уникален, sql server его «уникализирует»

добавлением к информации 4 байтового целого => возникают дополнительные накладные расходы на создание индекса, расходуется место на диске, дополнительно возрастает стоимость операций вставки и обновления.
Узкий КК - его значения дублируются во всех некластерных индексах. «Узкий» — это значит нужно постараться использовать как можно меньше байт, чтобы уникально определить ваши строки. «Узкое» число, если возможно.
Статичный КК - используется для поиска из всех некластерных индексов, тогда он дублируется во всех некластерных индексах. Изменяется => требуется обновить как значения в базовой таблице, так и значения в каждом некластерном индексе. И если ключ изменяется, это заставляет запись перемещаться. Когда запись перемещается — это создает фрагментацию.

Слайд 32 Некластерный индекс

Некластерный индекс

Слайд 33 Поиск с помощью В-дерева

Поиск с помощью В-дерева

Слайд 34 Составной ключ
Индекс может быть создан на основании нескольких

Составной ключИндекс может быть создан на основании нескольких полей.В один ключ

полей.
В один ключ составного индекса могут входить до 16

столбцов. Все столбцы ключа составного индекса должны находиться в одной таблице или одном и том же представлении.
Составной индекс для (Column1, Column2) является совершенно отличным от (Column2, Column1), а так же от индексов созданных по двум этим полям в отдельности.

Слайд 35 Составной ключ
Располагайте в начале ключи индекса, которые часто

Составной ключРасполагайте в начале ключи индекса, которые часто используются в WHERE

используются в WHERE выражениях.
Старайтесь располагать ключи индекса в порядке

уменьшения избирательности (selectivity), т.е. ключ с наибольшей избирательностью должен быть самым левым.

Слайд 36 Ограничения по длине
Суммарная длина ключа индекса не должна

Ограничения по длинеСуммарная длина ключа индекса не должна превышать 900 байтов.

превышать 900 байтов.
Если индекс построен по полям с

фиксированным размером, сумма длин этих полей должна не превышать эти 900 байт.
Если индекс построен по полям с переменной длинной, сумма максимальных размеров полей может превышать 900 байт, но само значение сумм по каждой записи не может быть больше 900 байт.

Слайд 37 Выбор столбцов
Следует создавать некластеризованные индексы для всех столбцов,

Выбор столбцовСледует создавать некластеризованные индексы для всех столбцов, которые часто используются

которые часто используются в предикатах и условиях соединения в

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

Слайд 38 Примеры предикатов с использованием составного индекса
CREATE CLUSTERED INDEX

Примеры предикатов с использованием составного индексаCREATE CLUSTERED INDEX Ind1 ON Table1

Ind1 ON Table1 (Name, IdNum)
Where Name like ‘Ива%’ and

IdNum=200
Where Name like ‘Ива%’





Слайд 39 Примеры предикатов без использования индекса
CREATE CLUSTERED INDEX Ind1

Примеры предикатов без использования индексаCREATE CLUSTERED INDEX Ind1 ON Table1 (Name,

ON Table1 (Name, IdNum)
Where IdNum > 100
Where Name like

‘%ва%’ and IdNum=200






Слайд 40 Покрывающий индекс
Если все столбцы запросы входят в состав

Покрывающий индексЕсли все столбцы запросы входят в состав ключа в индексе,

ключа в индексе, то такой индекс называется покрывающим.
Покрывающие индексы

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

Слайд 41 Включенные столбцы для некластеризованных индексов
Можно добавлять неключевые столбцы

Включенные столбцы для некластеризованных индексовМожно добавлять неключевые столбцы к конечному уровню

к конечному уровню некластеризованного индекса. Это позволяет покрывать больше

запросов.
Они могут содержать типы данных, не разрешенные для ключевых столбцов индекса.
Они не учитываются при расчете числа ключевых столбцов индекса и размера ключа индекса.
Индекс с включенными неключевыми столбцами может значительно повысить производительность запроса, когда все столбцы запроса включены в индекс как ключевые или неключевые.

Слайд 42 Отфильтрованные индексы
Отфильтрованный индекс - некластеризованный индекс, построенный по

Отфильтрованные индексыОтфильтрованный индекс - некластеризованный индекс, построенный по некоторому подмножеству значений

некоторому подмножеству значений ключа. 
Может повысить производительность запросов, снизить затраты

на обслуживание и хранение индексов по сравнению с полнотабличными индексами.
Фильтрованные индексы полезны на больших таблицах.

Слайд 43 Отфильтрованные индексы
Индекс обслуживается только в случае, если инструкции

Отфильтрованные индексыИндекс обслуживается только в случае, если инструкции языка обработки данных

языка обработки данных (DML) затрагивают данные в индексе. Возможно

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

Слайд 44 Отфильтрованные индексы
Разреженные столбцы, содержащие небольшое количество не NULL

Отфильтрованные индексыРазреженные столбцы, содержащие небольшое количество не NULL значений.Разнородные столбцы, содержащие

значений.
Разнородные столбцы, содержащие категории данных.
Столбцы, содержащие диапазоны значений, таких

как количество долларов, время и даты.
Секции таблицы, определенные логикой простого сравнения для значений столбцов.

Слайд 45 Отфильтрованные индексы
CREATE NONCLUSTERED INDEX Ind2
ON Production.Materials

Отфильтрованные индексыCREATE NONCLUSTERED INDEX Ind2 ON Production.Materials (CmpD, StartDate) WHERE EndDate IS NOT NULL ;

(CmpD, StartDate)
WHERE EndDate IS NOT NULL ;


Слайд 46 Индексы - недостатки
Индексы занимают дополнительное место на диске

Индексы - недостаткиИндексы занимают дополнительное место на диске и в оперативной

и в оперативной памяти. Чем больше/длиннее ключ, тем больше

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

Слайд 47 Не строить лишние индексы:
Большое количество индексов в таблице

Не строить лишние индексы:Большое количество индексов в таблице снижает производительность инструкций

снижает производительность инструкций INSERT, UPDATE, DELETE и MERGE, потому

что при изменении данных в таблице все индексы должны быть изменены соответствующим образом.
Для интенсивно обновляемых таблиц – меньше индексов.
Для таблиц с редкими обновлениями, но большими объемами данных - больше индексов.

Слайд 48 FILLFACTOR
Коэффициент заполнения - при создании или перестроении индекса

FILLFACTORКоэффициент заполнения - при создании или перестроении индекса позволяет зарезервировать место

позволяет зарезервировать место на каждой странице конечного уровня для

будущего расширения.
Коэффициент заполнения — это значение в процентах от 1 до 100; значение по умолчанию на сервере — 0 (полное заполнение страниц конечного уровня).
Например, FillFactor = 80 => 20 % free. Пустое место резервируется между строками индекса.


Слайд 49 Индексы для маленьких таблиц
Индексирование маленьких таблиц может оказаться

Индексы для маленьких таблицИндексирование маленьких таблиц может оказаться не лучшим выбором,

не лучшим выбором, так как поиск данных в индексе

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


Слайд 50 Представления WITH SCHEMABINDING
SCHEMABINDING  Привязывает представление к схеме базовой таблицы

Представления WITH SCHEMABINDINGSCHEMABINDING  Привязывает представление к схеме базовой таблицы или таблиц=>

или таблиц
=> базовая таблица или таблицы не могут быть

изменен таким образом, чтобы повлиять на определение представления. 

Слайд 51 Индексированное представление
WITH SCHEMABINDING – можно построить индексы, первым

Индексированное представлениеWITH SCHEMABINDING – можно построить индексы, первым – кластерный.Тогда представление

– кластерный.
Тогда представление будет храниться в базе данных подобно

таблице с кластеризованным индексом.
Поддерживать индексированное представление труднее, чем индекс таблицы. Если базовые данные обновляются часто, расходы на поддержание данных индексированного представления могут перевесить преимущества от его использования.

Слайд 52 Индексное представление
Может дать значительное улучшение производительности, если представление

Индексное представлениеМожет дать значительное улучшение производительности, если представление содержит агрегаты, объединения

содержит агрегаты, объединения таблиц или сочетание того и другого.


Повышают эффективность запросов:
Соединения и статистические вычисления, в ходе которых обрабатывается большое число строк.
Соединения и статистические вычисления, которые часто выполняются несколькими запросами.

Слайд 53 Советы по использованию индексов
Перед построением нового индекса убедитесь,

Советы по использованию индексовПеред построением нового индекса убедитесь, что такого еще

что такого еще нет.
Уникальность столбцов лучше указывать.
Мало уникальных

значений - плохо.
Отфильтрованные индексы для столбцов, имеющих точно определенные подмножества
Индексировать вычисляемые столбцы.

Слайд 54 Статистика
Дата и время последнего обновления статистики.
Общее число

СтатистикаДата и время последнего обновления статистики. Общее число строк в таблице

строк в таблице или индексированном представлении
Распределение значений ключа.
Плотность

ключа - 1/distinct values для всех значений в первом ключевом столбце объекта статистики.
Среднее число байтов на значение для всех ключевых столбцов в объекте статистики.
Является ли индекс строковым
И прочая полезная информация

Слайд 55 Статистика
Посмотреть статистику
DBCC SHOW_STATISTICS (table_or_indexed_view_name , index_name)

Обновить статистику
UPDATE

СтатистикаПосмотреть статистикуDBCC SHOW_STATISTICS (table_or_indexed_view_name , index_name) Обновить статистикуUPDATE STATISTICS table_or_indexed_view_name index_name

STATISTICS table_or_indexed_view_name index_name


Слайд 56 Фрагментация
При INSERT блок делится на два
При UPDATE может

ФрагментацияПри INSERT блок делится на дваПри UPDATE может увеличиться длина записиПри

увеличиться длина записи
При DELETE остаются пустые места
Фрагментация уменьшает производительность

групповых операций модификации данных
Низкий % заполнения страниц увеличивает количество страниц в индексе и использует лишнюю память

Слайд 57 Выявление фрагментации
select * from sys.dm_db_index_physical_stats (DB_ID(‘DB_name') ,OBJect_ID('table') , NULL , NULL

Выявление фрагментацииselect * from sys.dm_db_index_physical_stats (DB_ID(‘DB_name') ,OBJect_ID('table') , NULL , NULL , 'DETAILED')

, 'DETAILED')


Слайд 58 Параметры
avg_fragmentation_in_percent Процентная доля логической фрагментации (неупорядоченные страницы в индексе).
fragment_count Число

Параметрыavg_fragmentation_in_percent Процентная доля логической фрагментации (неупорядоченные страницы в индексе).fragment_count Число фрагментов

фрагментов (физически последовательные конечные страницы) в индексе.
avg_fragment_size_in_pages Среднее число страниц

в одном фрагменте индекса.

Слайд 59 Перестройка индекса

Перестройка индекса

Слайд 60 Рекомендации – 1
Создавайте кластерный индекс для каждой

Рекомендации – 1 Создавайте кластерный индекс для каждой таблицы.Удаляйте лишние индексы.Постарайтесь

таблицы.
Удаляйте лишние индексы.
Постарайтесь создать индексы по столбцам, которые имеют

целые, а не символьные значения.
Ограничьте количество индексов, если ваше приложение часто обновляет данные.

Слайд 61 Рекомендации – 2
Создавайте индекс для столбцов, которые

Рекомендации – 2 Создавайте индекс для столбцов, которые часто используются в

часто используются в JOIN’ах.
Создавайте кластерный индекс для увеличения производительности

запросов, которые возвращают диапазон значений, и для запросов, содержащих GROUP BY или ORDER BY выражения и возвращающих отсортированные результаты.

Слайд 62 Рекомендации – 3
Не используйте Identity в качестве

Рекомендации – 3 Не используйте Identity в качестве первичного ключа (запись

первичного ключа (запись всегда в конец – много запросов

пытаются прочитать и записать данные в одну область в одно время).
Желателен покрывающий индекс, (включающий все столбцы) для частых запросов.
Периодически перестраивайте все индексы во всех таблицах для уменьшения фрагментации.

  • Имя файла: indeksy.pptx
  • Количество просмотров: 165
  • Количество скачиваний: 1