у него хештаблица не помещается в память? Хештаблицу на диске особого смысла строить нету.
Допустим, вам нужно сджойнить две большие таблицы, данные в память не влазят. Есть два варианта, либо merge join с сортировкой на диске, либо nested loop.
Nested Loop означает, что идет сначала обращение к индексу, а затем обращение к нужной странице heap таблицы - и то и то означает random io как минимум раза 2 на одну строчку, а в случае полного сканирования будет как минимум полное чтение индекса и табличного heap - а это уже как минимум значит прочитать больше данных с диска. Даже у самых лучших ssd от intel по показателю 4k random read пропускная способность на порядок меньше, чем у последовательного чтения с очередью запросов, а у большинства обычных ssd вообще на два порядка разница! В итоге, чтобы прочитать таблицу целиком по индексу, придется прочитать данных с диска больше на размер самого индекса, и при этом еще медленнее как минимум на порядок, по сравнению с последовательным чтением.
> Хештаблицу на диске особого смысла строить нету. Поясните этот момент, почему вы потеряли смысл сбрасывать на диск ту часть, которая cодержит цепочки некотрого хеш значения.
Обсуждают сегодня