Ку всем. Есть ли какой-то инструмент чтобы проверить насколько "ухудшилась" вставка записей в таблицу при разных индексах (одиночном на одно поле, одиночном на несколько полей, составным на несколько полей) А то как бы выборка естественно видно как ускоряется, но хотелось бы знать и как при этом страдает запись....
Или где можно почитать про какие индексы каким образом ухудшают вставку и обновление данных?
У меня сейчас условно выбор между составным индексом на три поля который ускоряет мой селект с ~30 сек до 7 милисекунд (таблица ~380миллионов записей) Или одним обычным индексом на одно поле при котором тот же запрос отработает за 20ms, что тоже как бы очень неплохо! И я вот хочу в выводе аргументировать почему стоит выбрать индекс на одно поле всё-таки и получать записи за 20ms, и разница в 13 милисекунд не стоит составного индекса на три поля.
Я почему-то считаю что лучше один индекс на одно поле и получать записи за 20ms чем иметь один составной индекс на три поля и получать записи за 7ms, но не могу понять почему я так считаю и лучше ли это вообще
Имхо, скорость вставки/апдейта BTree мало зависит от длины кортежа. Ну то есть не пропорционально объёму индекса, а меньше. Поэтому я бы смотрел только на увеличение объёма и на количество индексов P.S. Понятно, что увеличение объёма влечёт и увеличение времени, т.к. обращением к большему числу страниц, но тут пострадает не только вставка в индекс, но равномерно всё
добрый день! не смог нагуглить, в чем разница между тремя следующими сущностями: postgresql-12-setup initdb /usr/pgsql-12/bin/initdb /usr/pgsql-12/bin/pg_ctl init помогите, подскажите, пожалуйста
> /usr/pgsql-12/bin/initdb бинарник из коробки постгреса у которого в задачу входит только инициализация кластера
> /usr/pgsql-12/bin/pg_ctl бинарник из коробки постгреса с множеством управляющих функций (одна из которых - инициализация)
> postgresql-12-setup емнип просто скрипт из пакетов rhel/centos который под капотом использует вышеупомянутй initdb
бинарники и скрипт отличаются разным набором функциональности, но указанные команды по инициализации не отличаются - результат у всех трех будет одинаков (без учета входных параметров, типа encoding, locale и т.п.)
Там могут быть нюансы. Если в центос производить установку так как описано на сайте, то в Pg_hba.conf будут адекватные значения, если через initdb то будут trust
разница в том, что initdb нельзя выполнять под пользователем root, поэтому считается правилом хорошего тона выполнять его под пользователем postgres, а вот postgresql-12-setup можно выполнить непосредственно под root. Но как уже сказали ранее, под какпотом выполняется Initdb.