172 похожих чатов

А есть бест практис для CONCURRENTLY индексов? для каких данных

лучше всего их юзать?

13 ответов

15 просмотров

Это не про типы, concurrently используют если нельзя прлучить блокировку на таблицу, а хотят попытать шанс создать индекс с минимальными блокировками

Могу привести пример с текущей работы - есть очень большая таблица (> 100М записей), которая является очень часто используемой. Обычная комманда create index заблокировала бы таблицу почти на час чтобы построить индекс. Очевидно что это не приемлемо. Для таких случаев и нужен concurently - чтобы не блокировать работу с таблицей.

Alex
Могу привести пример с текущей работы - есть очень...

А индекс строиться только 1 раз ? Я прочитал что CONCURRENTLY не блокирует операции вставки/обновления , я понял это так : если в таблицу часто происходят вставки нужен CONCURRENTLY т.к индекс будет пересоздаваться при каждом обновлении таблицы правильно?

punkin ☘
А индекс строиться только 1 раз ? Я прочитал что C...

Он не будет пересоздаваться при каждой вставке в таблицу. Индекс это структура данных. Если мы говорим о b-tree, то по-идее дерево должно просто перебалансироваться.

punkin ☘
А индекс строиться только 1 раз ? Я прочитал что C...

Сам индекс создаётся точно такой же. Просто происходит это без блокировки таблицы

Alex
Он не будет пересоздаваться при каждой вставке в т...

должно или перебалансируется? Раньше в 9 версии было, что индекс бтрии именно просто добавлялся и сам по себе никогда не балансировался. Поэтому его надо было создавать новый паралельно и удалять старый. Сейчас это не так?

Максим Мартынов
Сам индекс создаётся точно такой же. Просто происх...

Ааа, я вроде-бы понял если я прямо сейчас хочу создать индекс, но на данный момент происходят операции вставка/обновления, то нужен CONCURRENTLTY т.к иденкс не будет создан до тех пор пока не завершаться все эти транзакции. Если же базой никто не пользоваться я могу спокойно CREATE INDEX без concurently

ks
должно или перебалансируется? Раньше в 9 версии бы...

Скажем так, это моя догадка о том как работают индексы в действительности в случае операций над индексируемыми колонками.

Alex
Скажем так, это моя догадка о том как работают инд...

тогда рискну погадать, что ваша догадка не верная. Автовакум крайне плохо чистил индексы, по сути совсем их не трогал. Это была особенность постгрес для длинных таблиц с постоянно обновляемыми данными с колонками индексов. Индекс легко для мелких по байтам полей может быть больше, чем всё поле целиком. Также индекс плохо чистился. В 13 версии не знаю.

ks
должно или перебалансируется? Раньше в 9 версии бы...

Это представление в корне неверное ни для 9 версии, ни для какой.

ks
тогда рискну погадать, что ваша догадка не верная....

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

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта