Size: a a a

pgsql – PostgreSQL

2021 March 18

YS

Yaroslav Schekin in pgsql – PostgreSQL
Ilia Zviagin
Я не говорил что будет быстрее.
Ну так тогда этим есть смысл заниматься только для защиты от отката в случае "падения" сервера.
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Yaroslav Schekin
И это будет тупо гораздо дольше, больше ничего.
Вот из какой СУБД у Вас такие привычки, где разработчики умудрились так накосить, что у них курсор работает быстрее простого DELETE FROM, а? ;)
Ты запустишь delete, он будет работать скажем неделю.
Если что не так - он встанет, а что он сделал - откатиться (это ещё неделя).

И потом снова неделю исправлять.... И так пока не случится идеальный delete
источник

AD

Artem D. in pgsql – PostgreSQL
batyrmastyr
Из легко заметного:
1. btree индексы стали занимать в 3 раза меньше места и ощутимо быстрее.
2. В 13  ORDER BY a, b может использовать индекс по a и досортировать по b, до этого нужен был индекс именно a, b.
3. В 10-м постгресе LIKE не умеет ускоряться за счёт триграммных индексов, а регулярки не используют SPGIST. В 13-м работают почти все комбинации (LIKE 'bla' ускорят в 14-м), хотя LIKE по триграммам всё равно в 2-3 раза медленнее регулярок ищет. Но это где-то в 11 и 12 ускорили.
Спасибо 👍
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Yaroslav Schekin
Ну так тогда этим есть смысл заниматься только для защиты от отката в случае "падения" сервера.
Именно для этого
источник

R

Radist in pgsql – PostgreSQL
John Doe
таблица загружалась с помощью copy from 2 дня, попробую еще вариант почистить исходный csv и загрузить заново... может так быстрее будет...
Можно ведь csv в пайплайне обрабатывать перед отправкой в БД, чтото типа
cat file.csv|grep ...|psql -c "copy from stdin"
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
John Doe
хорошо) спасибо за помощь
Хорошо хоть "я не знаю, меня друг попросил узнать"
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
John Doe
таблица загружалась с помощью copy from 2 дня, попробую еще вариант почистить исходный csv и загрузить заново... может так быстрее будет...
Да, это даже лучше
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Ilia Zviagin
Ты запустишь delete, он будет работать скажем неделю.
Если что не так - он встанет, а что он сделал - откатиться (это ещё неделя).

И потом снова неделю исправлять.... И так пока не случится идеальный delete
> Если что не так - он встанет,

Постоит и пойдёт дальше (когда транзакция, которая его блокировала, завершится), ничего страшного.

> а что он сделал - откатиться (это ещё неделя).

А эти опасения у Вас из какой СУБД? ;) ROLLBACK в PostgreSQL почти всегда происходит мгновенно, причём независимо от выполненного в транзакции объёма работы, just FYI.
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Yaroslav Schekin
> Если что не так - он встанет,

Постоит и пойдёт дальше (когда транзакция, которая его блокировала, завершится), ничего страшного.

> а что он сделал - откатиться (это ещё неделя).

А эти опасения у Вас из какой СУБД? ;) ROLLBACK в PostgreSQL почти всегда происходит мгновенно, причём независимо от выполненного в транзакции объёма работы, just FYI.
Я имел в виду ошибку
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Yaroslav Schekin
> Если что не так - он встанет,

Постоит и пойдёт дальше (когда транзакция, которая его блокировала, завершится), ничего страшного.

> а что он сделал - откатиться (это ещё неделя).

А эти опасения у Вас из какой СУБД? ;) ROLLBACK в PostgreSQL почти всегда происходит мгновенно, причём независимо от выполненного в транзакции объёма работы, just FYI.
Второе - да, может неправ.
источник

n

nibble in pgsql – PostgreSQL
Alexey Lesovsky
погодите, вы тут написали что все проверки успешны, но при этом снаружи к базе никто не может подключиться? это слегка противоречит пункту с ss.

покажите docker-compose ps грепнув вывод по имени контейнера с БД
postgresql_1                      docker-entrypoint.sh postgres    Up      0.0.0.0:15432->5432/tcp
источник

b

batyrmastyr in pgsql – PostgreSQL
John Doe
Привет) не могу придумать как эффективно решить задачу:
есть таблица (5 млрд) с полями key varchar, value varchar,
В большинстве value лежит IP-адрес, но есть плохие данные, где там фигня вместо IP.
Вопрос: как можно эффективно убрать плохие данные, оставив value где только IP?
Пробовал выбирать с regexp (~) - очень долго
При insert в таблицу с value inet - ошибка
Может какой-то индекс нужно построить? или как-то иначе...
Триграммный индекс не пробовали?
источник

SG

Sergey Gerasimov in pgsql – PostgreSQL
День добрый.

Можно ли из jsonb по кейсу исключить несколько значений?

SELECT ('{"status_id": {"n": "001", "o": "002"}, "type": {"n": "other", "o": null}}' :: JSONB)
          - CASE WHEN TRUE THEN 'status_id' END


Например если в THEN попадает - исключить n полей, а в ELSE другие n полей
источник

JD

John Doe in pgsql – PostgreSQL
batyrmastyr
Триграммный индекс не пробовали?
здесь нет, но думал про него. Он обычно долго строится и не сильно ускоряет запросы вида '%term%' (по моему скромному опыту)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Ilia Zviagin
Я имел в виду ошибку
Нормально написанный DELETE может прервать разве что deadlock (и т.п.), а если к этой таблице никто больше не обращается, это не проблема. Вот "падение" / перезапуск сервера PostgreSQL (по несвязанным причинам) в это время — это риск, да.
источник

JD

John Doe in pgsql – PostgreSQL
да, наверное самое правильное - чистить csv и потом уже cope from
источник

R

Radist in pgsql – PostgreSQL
Yaroslav Schekin
Нормально написанный DELETE может прервать разве что deadlock (и т.п.), а если к этой таблице никто больше не обращается, это не проблема. Вот "падение" / перезапуск сервера PostgreSQL (по несвязанным причинам) в это время — это риск, да.
При таком объеме, вероятно возможная причина падения - нехватка дискового пространства. Вот об этом надо будет позаботиться (чтобы место было столько, сколько занимает таблица + wal-ы)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
John Doe
да, наверное самое правильное - чистить csv и потом уже cope from
Скорее всего, да. Потому что всё равно читается, а при чистке самой таблицы — придётся читать ещё раз, и, причём, больше (накладные расходы на хранение "раздувают" таблицы по сравнению с CSV).
источник

R

Radist in pgsql – PostgreSQL
Sergey Gerasimov
День добрый.

Можно ли из jsonb по кейсу исключить несколько значений?

SELECT ('{"status_id": {"n": "001", "o": "002"}, "type": {"n": "other", "o": null}}' :: JSONB)
          - CASE WHEN TRUE THEN 'status_id' END


Например если в THEN попадает - исключить n полей, а в ELSE другие n полей
Jsonvalue - 'field1' - 'field2' - field3'
источник

R

Radist in pgsql – PostgreSQL
Но это только для корневого уровня подходит
источник