Какие издержки добавляют некластеризованные индексы? - PullRequest
2 голосов
/ 01 октября 2010

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

О каких накладных расходах мы на самом деле говорим?Почему было бы плохой идеей просто индексировать все?Это конкретная реализация?(в этом случае меня больше всего интересуют ответы вокруг pg)

РЕДАКТИРОВАТЬ : Чтобы объяснить причину этого немного больше ...

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

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

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

Ответы [ 3 ]

3 голосов
/ 01 октября 2010

Случайные мысли

  • Индексы полезных чтений, конечно,
  • Вы должны индексировать, где вы получаете максимальную отдачу за свой доллар
  • Большинство БД читаются> 95%(подумайте об обновлениях, проверках FK, повторных проверках и т. д. = читает)
  • «Все» бессмысленно: большинство проиндексированных должно быть составным с включениями
  • Определить большой объем У нас 15-20 миллионов новыхстрок в день с индексами
1 голос
/ 01 октября 2010

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

  • Увеличение требований к дисковому пространству.
  • Все записи (вставки, обновления, удаляет) стоит дороже, так как все индексы должны быть обновлены.
  • Увеличено число подслушивающих блокировок транзакций (все индексы должны быть обновлены в транзакции, что приводит к необходимости дополнительных блокировок и т. д.).
  • Потенциально увеличеносложность для оптимизатора запросов (выбор того, какой индекс наиболее вероятно будет работать лучше; также возможен выбор одного индекса, когда другой индекс будет лучше).
1 голос
/ 01 октября 2010

Введение в индексы

Короче говоря, индекс, кластеризованный или нет, добавляет дополнительные "ветви" к "дереву", в котором хранятся данные большинством современных СУБД.Это позволяет находить значения с помощью одной уникальной комбинации индекса логарифмического времени вместо линейного времени.Это сокращение времени доступа ускоряет многие общие задачи, которые выполняет БД;однако при выполнении задач, отличных от этого, это может замедлить его, потому что данные должны быть доступны через дерево.Например, для фильтрации на основе неиндексированных столбцов требуется, чтобы механизм выполнял итерацию по дереву, а поскольку отношение узлов ветвей (содержащих только указатели к другому месту в дереве) к конечным узлам было уменьшено, это займет больше времени, чемесли индекс отсутствовал.

Кроме того, некластеризованные индексы разделяют данные на основе значений столбцов, но если эти значения столбцов не очень уникальны во всех строках таблицы (как флаг, указывающий «да» или «нет "), тогда индекс добавляет дополнительный уровень сложности, который фактически не помогает при поиске;на самом деле это мешает, потому что при переходе от корня к листьям дерева встречается дополнительная ветвь.

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