Когда и почему соединения с базой данных обходятся дорого?

Что большинство комментаторов joins не замечают, так это широкий db спектр методологий соединения, доступных denormalization в сложных СУБД, и денормализаторы databases неизменно замалчивают более join высокую стоимость обслуживания db денормализованных данных. Не denormalization каждое соединение основано speed на индексах, а в базах данных relational-database есть множество оптимизированных databases алгоритмов и методологий dbms объединения, предназначенных fast для снижения затрат на соединение.

В performance любом случае стоимость соединения slow зависит от его типа и ряда denormalization других факторов. Это совсем sql-join не обязательно должно быть dbms дорого - несколько примеров.

  • Хэш-соединение, в котором объемные данные объединяются по принципу равноправия, действительно очень дешево, и стоимость становится значительной только в том случае, если хеш-таблицу нельзя кэшировать в памяти. Индекс не требуется. Равномерное распределение между объединенными наборами данных может оказаться очень полезным.
  • Стоимость соединения сортировка-слияние определяется стоимостью сортировки, а не слияния — метод доступа на основе индекса может практически исключить стоимость сортировки.
  • Стоимость соединения с вложенным циклом в индексе определяется высотой индекса b-дерева и доступом к самому блоку таблицы. Это быстро, но не подходит для массовых соединений.
  • Соединение с вложенным циклом на основе кластера намного дешевле, поскольку на каждую строку соединения требуется меньше логических операций ввода-вывода — если обе соединяемые таблицы находятся в одном кластере, то объединение становится очень дешевым за счет совместного размещения соединяемых строк.

Базы fast данных предназначены для efficiency объединения, и они очень jointable гибки в том, как они это database делают, и в целом очень производительны, если database они не ошибаются в механизме sql-join соединения.

database

performance

join

relational-database

denormalization

2022-10-10T03:50:58+00:00
Вопросы с похожей тематикой, как у вопроса:

Когда и почему соединения с базой данных обходятся дорого?