Найдено результатов: 1

PostgreSQL: индексы GIN или GiST?

Из той информации, которую я смог найти, они оба решают одни и те же проблемы - более эзотерические операции, такие как удержание массива и пересечение (&&,@>, <@, и т. д.). Однако мне было бы интересно получить совет о том, когда использовать тот или иной метод (или ни один из них).
Документация PostgreSQL содержит некоторую информацию об этом:

  • GIN поиск по индексу примерно в три раза быстрее, чем GiST
  • GIN индексация занимает примерно в три раза больше времени, чем GiST
  • GIN индексы обновляются примерно в десять раз медленнее, чем GiST
  • GIN индексы в two-to-three раз больше, чем GiST

Однако мне было бы особенно интересно узнать, есть ли влияние на производительность, когда объем памяти для индексирования начинает уменьшаться (т. е. размер индекса становится намного больше, чем доступная память)? Мне сказали на канале #postgresql IRC, что GIN должен хранить весь индекс в памяти, иначе он не будет эффективен, потому что, в отличие от B-дерева, он не знает, какую часть читать с диска для конкретного запроса? Вопрос был бы таков: верно ли это (потому что мне тоже говорили обратное)? Имеет ли GiST такие же ограничения? Существуют ли другие ограничения, о которых я должен знать при использовании одного из этих алгоритмов индексирования?

postgresql   indexing   gin   gist-index    

514   1   13:09, 11th August, 2020