Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Настройка производительности. Индексы




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

Как правило, используется комплексный подход. Под этим понимается оптимизация всех звеньев системы — серверной, клиентской и сетевой части. Существует целый ряд способов настройки производительности: настройка рабочих станций клиентов, сетевого транспорта, оптимизация клиентских приложений, оптимизация серверного PL/SQL-кода и SQL-запросов. В данной лекции мы подробно рассмотрим основной способ повышения производительности при исполнении SQL-запросов – использование индексов.

Понятие индекса

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

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

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

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

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

Индексы бывают двух видов — простые и составные. Составной индекс — это индекс, включающий более чем один столбец. Можно совместно проиндексировать два или более столбца, каждый из которых обладает низкой селективностью, а пара их значений — высокой. Если все столбцы, используемые запросом, входят в составной индекс, то обращения к таблицам можно вовсе избежать — все данные будут считаны только из индекса. Для эффективного использования составного индекса необходимо, чтобы логические условия были наложены на ведущие столбцы индекса, то есть на те столбцы, которые были указаны первыми при создании индекса.

Как правило, в индексах хранятся значения индексируемых столбцов таблицы и физические адреса строк для каждого из хранимых значений столбца (столбцов). В Oracle у каждой строки таблицы есть собственный уникальный идентификатор ROWID, который полностью определяет ее физический адрес на диске. Чтобы найти строку в таблице по заданному значению столбца, необходимо найти соответствующие ROWID в индексе и затем сразу перейти к указанным ими строкам в таблице.

Как уже упоминалось, индексы являются вспомогательным объектом, поэтому они не поддерживаются стандартом SQL. Тем не менее, все СУБД используют индексы и больших принципиальных различий в политике использования индексов не наблюдается.

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

Далее мы остановимся на основных способах индексирования, принятых в Oracle.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...