Jump to content

Блокировать вложенный цикл

Блочно -вложенный цикл ( BNL ) — это алгоритм, используемый для соединения двух отношений в реляционной базе данных . [1]

Этот алгоритм [2] является разновидностью простого соединения вложенного цикла и объединяет два отношения и («внешний» и «внутренний» объединяют операнды соответственно). Предполагать . В традиционном соединении вложенного цикла: будет сканироваться один раз для кортежа каждого . Если есть много подходящих кортежей, особенно если нет подходящего индекса для ключа соединения на , эта операция будет очень дорогой.

Алгоритм соединения блочных вложенных циклов совершенствует простое соединение вложенных циклов за счет только сканирования один раз для группы каждой кортежи. Здесь группы представляют собой непересекающиеся множества кортежей в и объединение всех групп имеет те же кортежи, что и . Например, один из вариантов объединения вложенных циклов блоков считывает страницу всю кортежи в память и загружают их в хеш-таблицу . Затем он сканирует и исследует хэш-таблицу, чтобы найти кортежи, соответствующие любому из кортежей на текущей странице . Это уменьшает количество сканирований которые необходимы.

algorithm block_nested_loop_join is
    for each page pr in R do
        for each page ps in S do
            for each tuple r in pr do
                for each tuple s in ps do
                    if r and s satisfy the join condition then
                        yield tuple <r,s>


Более агрессивный вариант этого алгоритма загружает столько страниц столько, сколько может поместиться в доступной памяти, загружая все такие кортежи в хеш-таблицу, а затем многократно сканируя . Это еще больше сокращает количество сканирований которые необходимы. Фактически, этот алгоритм по сути является частным случаем классического алгоритма хэш-соединения . [ нужна ссылка ]

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

  1. ^ «8.2.1.14 Блокировка соединений вложенного цикла и пакетного доступа к ключам» . Справочное руководство по MySQL 5.6 . Корпорация Оракл . Проверено 2 августа 2015 г.
  2. ^ «Блокировать соединение вложенного цикла» . МарияДБ . Корпорация MariaDB Ab . Проверено 2 августа 2015 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 38371f92091fd47eeafa1cedb21973da__1701282300
URL1:https://arc.ask3.ru/arc/aa/38/da/38371f92091fd47eeafa1cedb21973da.html
Заголовок, (Title) документа по адресу, URL1:
Block nested loop - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)