Руководство по созданию эффективных запросов



Download 17,08 Mb.
Pdf ko'rish
bet39/210
Sana25.06.2022
Hajmi17,08 Mb.
#704548
TuriРуководство
1   ...   35   36   37   38   39   40   41   42   ...   210
Bog'liq
OptimizZaprvPostgreSQL

и
ндексные
 
структуры
Этот раздел начинается с абстрактного определения того, какую структу-
ру хранения можно назвать индексом; кратко рассматриваются наиболее 
распространенные индексные структуры, такие как деревья и хеш-индексы, 
и затрагиваются некоторые особенности PostgreSQL.
Мы покажем, как оценить масштаб улучшений для разных типов индексов 
и как распознать случаи, когда использование индекса не дает никаких пре-
имуществ в смысле производительности.
Что такое индекс?
Можно предположить, что любой человек, работающий с базами данных
знает, что такое индекс. Увы, удивительно много людей – разработчиков баз 
данных и составителей отчетов, а в некоторых случаях даже администра-
торов баз данных – используют индексы и даже создают их, лишь поверх-
ностно представляя, что это за объекты и какова их структура. Во избежание 
недоразумений мы начнем с определения того, что мы подразумеваем под 
индексом.


Индексные структуры 

47
Существует множество типов индексов, поэтому мы ориентируемся не на структурные 
свойства, а определяем индекс по способу его использования. Структура данных назы-
вается индексом, если:
это избыточная структура данных;
она невидима для приложения;
она предназначена для ускорения выбора данных по определенным критериям.
Избыточность означает, что индекс можно удалить без потери данных 
и восстановить по информации, хранящейся где-то еще (конечно, в табли-
цах). Невидимость означает, что приложение не может узнать о наличии ин-
декса или о его отсутствии. Иначе говоря, любой запрос дает те же результаты 
как с индексом, так и без него. И наконец, индекс создается в надежде (или 
с уверенностью), что это улучшит производительность конкретного запроса 
или (что еще лучше!) нескольких запросов.
Улучшение производительности не происходит бесплатно. Поскольку 
индекс избыточен, он должен обновляться при обновлении данных таб-
лицы. Это приводит к накладным расходам для операций обновления
которыми иногда нельзя пренебречь. В частности, индексы PostgreSQL 
могут оказывать большое влияние на операцию очистки (
VACUUM
). Однако 
многие учебники по базам данных переоценивают эти расходы. Совре-
менные высокопроизводительные СУБД используют алгоритмы, которые 
снижают стоимость обновлений индексов, поэтому несколько индексов 
в таблице – обычное дело.
Хотя индексные структуры могут значительно различаться для разных ти-
пов индексов, ускорение всегда достигается за счет быстрой проверки неко-
торых условий фильтрации, указанных в запросе. Такие условия фильтрации 
устанавливают определенные ограничения на атрибуты таблицы. На рис. 3.5 
показана структура наиболее распространенных индексов.
В правой части рисунка показана таблица, а в левой – индекс, который 
можно рассматривать как особый вид таблицы. Каждая строка индекса со-
стоит из индексного ключа и указателя на строку таблицы. Значение ключа 
обычно совпадает со значением атрибута таблицы. В примере на рис. 3.5 
в качестве значения используется код аэропорта; следовательно, данный 
индекс поддерживает поиск по коду аэропорта.
У столбца может быть одно и то же значение в нескольких строках табли-
цы. Если этот столбец индексирован, индекс должен содержать указатели на 
все строки, содержащие это значение индексного ключа. В PostgreSQL индекс 
содержит несколько записей, то есть ключ индекса повторяется для каждого 
указателя на строку таблицы.
Рисунок 3.5 объясняет, как добраться до соответствующей строки таблицы 
при обнаружении записи индекса; однако он не объясняет, почему строку 
индекса можно найти намного быстрее, чем строку таблицы. Действительно, 
это зависит от того, как структурирован индекс, и именно это мы обсуждаем 
в следующих подразделах.



Download 17,08 Mb.

Do'stlaringiz bilan baham:
1   ...   35   36   37   38   39   40   41   42   ...   210




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish