2008-12-31 6 views
3

В последнее время появилось несколько вопросов о индексировании базы данных и кластеризации индексирования, и она была для меня новой до последних двух недель. Мне было интересно, насколько это важно и какие выгоды от производительности можно ожидать от их создания.Насколько важно индексировать и кластеризовать индексацию производительности базы данных?

Редактировать: Как правило, лучший тип полей для поиска при кластеризации в кластерный индекс при первом запуске?

ответ

10

Очень очень A (G, G) важно. На мой взгляд, мудрая индексация является абсолютной самой важной вещью в оптимизации производительности БД.

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

EDIT: В основном, кластеризованные индексы обычно должны иметь короткие длины. Они должны создаваться по запросам, которые отражают диапазон. У них не должно быть дубликатов записей. Но эти рекомендации очень общие, а отнюдь не правильные. Правильное дело - проанализировать запросы, которые будут выполнены. Тщательно анализируя и анализируя планы выполнения и понимая, что это лучший способ сделать это. Это требует многолетнего опыта и знаний, и ни в коем случае это не объясняет в одном абзаце. Это главное, что делает эксперт экспертов по БД (это не единственное, но оно примитивно для других важных вещей, таких как проблемы параллелизма, доступность, ...)!

+0

Это также нельзя переоценить, особенно для таблиц с большим количеством строк. Это разница между сканированием таблицы и двоичной сортировкой. Для таблицы строк в 200 тыс. Это разница между максимальным числом 200 тыс. И 19 прочтениями. – ctacke

+0

ctacke: Очень верно. Я обновил количество «очень», чтобы отразить ваш комментарий! –

+0

спасибо! Это была отличная помощь. –

1

Без надлежащих индексов вы вынуждаете РСУБД выполнять сканирование таблиц для запроса чего-либо. Ужасно неэффективно.

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

+0

@duffmyo у нас есть первичные ключи на каждом столе, но из того, что я слышал, это не всегда лучшее решение для кластеризованного индекса на вашем первичном ключе, но будет более полезным в поле метки времени –

+0

Кластеризованный индекс - это просто физический порядок сортировки таблицы. Это «лучше», чем некластеризованный индекс, потому что он не занимает дополнительного места. Поскольку таблица может иметь только один физический макет, вы можете иметь только один кластерный индекс. – ctacke

+0

С точки зрения перспективы кластеризованное v. Некластеризованное является незначительным (некластеризованный требует окончательного поиска строки в фактической таблице). – ctacke

2

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

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

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

1

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

1

Индексация жизненно важно.

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

1

Как уже говорилось в других ответах, индексирование имеет решающее значение.

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

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

Кластеризованное индексирование - это второй или дополнительный прирост производительности - обычно дает небольшой (< 100%) процент увеличения производительности.

(Мы также задаем вопросы о том, «что такое 100% прирост производительности», я интерпретирую этот процент как ((oldtime - newtime)/newtime) * 100, поэтому, если старое время составляет 10 секунд, а новое время составляет 5 секунд, увеличение производительности составляет 100%.)

Различные СУБД имеют разные интерпретации того, что означает кластеризованный индекс. Осторожно. В частности, некоторые СУБД кластеризуют данные один раз и после этого, кластеризация затухает с течением времени, пока данные не будут скрыты. Я полагаю, что другие придерживаются более активного представления о кластеризации.

0

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

Это может очень хорошо не иметь места в действительности, однако refrencing кластерных индексов Ususally получает вам следующие бонусы производительности в любом случае:

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

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

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

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

Не рассчитывайте на # 3 и особенно # 4. # 1 и # 2 являются обычными безопасными ставками на большинстве платформ РСУБД.

 Смежные вопросы

  • Нет связанных вопросов^_^