
Никита
12.10.2018
10:44:56
И когда эти недостатки начинают себя проявлять

Oleg
12.10.2018
10:51:24
совсем недавно видел доклад чей-то, про бигдата и грабли. там ууид решили использовать непомнюзачем уже. вроде для шардинга.
там проявилась "бага" что при массовой миграции данных, у них генерирование одновременно многих uuid-ов было не таким равномерным как хотелось, какая-то часть ключа была слишком одинаковая, btree-индексы стал немного больше в глубину чем плаинровали

Maxim ??
12.10.2018
10:58:13
https://www.youtube.com/watch?v=HxwLCyCY8ec

Google

Oleg
12.10.2018
11:08:11
ой как было тяжко слушать этот доклад.... я его в на отдельном окне открыл и слушал, и постоянно подгорало от советов которые надо было воспринимать с приставкой "не надо делать так"

Maxim ??
12.10.2018
11:08:30
Да да да :D

Никита
12.10.2018
11:13:34

Oleg
12.10.2018
11:13:41
да.

Никита
12.10.2018
11:13:53
А что в случае использования uuid4?

Oleg
12.10.2018
11:18:55
вспомнил. у нас когда-то один сервис использовал uuid-ы, причём в базе они хранились как char(). данные которые они собой представляли в базе - по сути журнал операций. в uuid дата-время не отражено, для даты нужно отдельное поле. для поддерживания уникальности нужно иметь ПК. от постоянных вставок индекс пух сильно. по расписанию "старые данные" уезжали в olap и вычищаились из оперативной бд, это приводило к тому что индекс снова пух. это не постгрес был и аналог вакуума для индекса - онлайн
для айдишника "пользователей" как в примере Меньшикова uuid был более осмысленный. найти среди десятков таблиц в других сервисах сквозной единый uuid.

Никита
12.10.2018
11:25:22
то есть основные проблемы с производительностью связаны с тем что WAL растет и возникают проблемы с index'ами?

Oleg
12.10.2018
11:29:03
в моем случае производительность не стала проблемой. но бездумное повышенное потребление ресурсов, как дискового пространства так и iops, а также больше сил тратилось на обслуживание. но на фоне применения других "worst practices" это была фигня.

bebebe
12.10.2018
11:37:53

Terminator
12.10.2018
11:49:39
@d_zhukov будет жить. Поприветствуем!

Дмитрий
12.10.2018
11:50:56
Коллеги, помогите сделать запрос, если можете.
Есть в таблице столбец с текстовыми ячейками и в них нужно убрать перенос строки
Пример:
123
456
567
890
Должно получиться:
123 456 567 890
Спасибо!

Maxim ??
12.10.2018
11:51:46
select regexp_replace(field, E'[\\n\\r]+', ' ', 'g' )

Google

Дмитрий
12.10.2018
11:51:53
я пробовал через replace char13 , но ничего не получается

Demuz
12.10.2018
11:52:46
Здарова всем. Подскажите, что pgsql запустить как мастер, а не как реплику, что необходимо поменять в конфиге? А то он в readonly режиме повис, его patroni неверное отработал.

Дмитрий
12.10.2018
11:54:03

Maxim ??
12.10.2018
11:54:30
ну так добавь остальные

Алексей
12.10.2018
11:54:40

Дмитрий
12.10.2018
11:55:12

Алексей
12.10.2018
11:55:43

Maxim ??
12.10.2018
11:56:29

Дмитрий
12.10.2018
11:57:33
можешь подробнее объяснить

Demuz
12.10.2018
12:00:01
Клас, что скажешь)

Alex
12.10.2018
12:04:54
а в логах что ?

Demuz
12.10.2018
12:05:22
а в логах что ?
waiting for server to promote............................................................... stopped waiting
pg_ctl: server did not promote in time

bebebe
12.10.2018
12:07:40
синие логи!

Alex
12.10.2018
12:08:13
bsod )

Вадим
12.10.2018
12:11:00
ну пермишен денай же

Demuz
12.10.2018
12:11:11
Patroni кто нибудь пробовал? Во время тестов все отлично показывал, на трех нодах, а сегодня, когда его перед продом начали проверять, взял и перестал работать кластер. Сам Patroni имею ввиду. ?

Google

Demuz
12.10.2018
12:12:23
Теперь сказали просто поднять мастер и пусть пока без всяких патрони работает, мол

Айтуар
12.10.2018
12:32:04

Demuz
12.10.2018
12:32:49
Конечно сам перестал, если его не трогали после первых тестов)
Во всяком случае запорол я, так запорол)
@Aytuar, кстати, а сейчас дельное что-нибудь есть в мульти-мастерном мире?

Айтуар
12.10.2018
12:34:21
Внимательно посмотри логи. Есть ли там инициализация кластера. Или промоут.

Roman
12.10.2018
12:35:51

Айтуар
12.10.2018
12:36:52

Aleksander
12.10.2018
12:37:34
ребят кто нибудь пользовался greenplum что скажите?

Yaroslav
12.10.2018
12:49:26

Mike Chuguniy
12.10.2018
12:49:34

Григорий
12.10.2018
13:07:30
Всем приятной пятнички! У меня, наверное, нубский вопрос. Есть задача удалить лишние схемы в базах. схема public нужна, public_bad нет. И я серьёзно встрял на этом вопросе. Потому как я так понимаю мне нужно перебрать все базы и выполнить в них drop schema if exists "public_bad" cascade; Я прав или нет? :) Интернет на мои запросы выдаёт инфу только по удалению табличек, а моих познаний в sql явно недостаточно. Писать скрипт для такой задачи не хотелось бы.
Есть какое-нибудь элегантное решение, типа такого select 'drop table if exists "' || tablename || '" cascade;' from pg_tables; ?

Yaroslav
12.10.2018
13:15:04

Григорий
12.10.2018
13:16:30

Andrew
12.10.2018
13:34:31
Как можно написать запрос так, чтобы если binding на city_id был null, то возвращать 1?
select * from todos
where
date >= CURRENT_DATE
and 1 = case
when city_id = :city_id then 1
when :city_id is null then 1
else 0
end
order by date asc

Yaroslav
12.10.2018
13:38:27

Aleksander
12.10.2018
13:38:41

Google

Aleksander
12.10.2018
13:39:07
nvl(:city_id,-1) =-1 then 1

Ilia
12.10.2018
13:39:51

Andrew
12.10.2018
13:40:07

Алексей
12.10.2018
13:41:08
coalesce?

Ilia
12.10.2018
13:41:49
Так-то
and city_id = coalesce(:city_id , city_id)

Yaroslav
12.10.2018
13:41:58

Ilia
12.10.2018
13:42:05
Но это дрянной запрос

Yaroslav
12.10.2018
13:43:04

Andrew
12.10.2018
13:43:38
я хочу получить список, если city_id = :city_id и если :city_id is null, во всех остальных случаях ничего не возвращать
у меня один binding на city_id и хочу использовать его в двух местах
т.е. очень похоже на то как тут
SELECT first_name, last_name, subsidiary_id, employee_id
FROM employees
WHERE ( subsidiary_id = :sub_id OR :sub_id IS NULL )
AND ( employee_id = :emp_id OR :emp_id IS NULL )
AND ( UPPER(last_name) = :name OR :name IS NULL )
https://use-the-index-luke.com/sql/where-clause/obfuscation/smart-logic

Yaroslav
12.10.2018
13:50:46

Алексей
12.10.2018
13:52:05
при условии, что city_id не NULL

Andrew
12.10.2018
13:54:36

Yaroslav
12.10.2018
13:55:49

Дмитрий
12.10.2018
13:59:07
Ребят, помогите с запросом удаления переноса строки строки в ячейке таблицы. select regexp_replace from contacts(notes, E'[\\n\\r]+', ' ') не работает, как и update(

Google

Алексей
12.10.2018
14:02:09
select regexp_replace(notes, E'[\\n\\r]+', ' ') from contacts

Дмитрий
12.10.2018
14:03:04

Алексей
12.10.2018
14:07:05
чему?

Дмитрий
12.10.2018
14:07:50
запрос выполнился, но поля так и остались
не обьединились в одну строку

Алексей
12.10.2018
14:08:45
Возможно вы вопрос не правильно задали? Может быть надо сделать string_agg?

Лаврентий
12.10.2018
14:17:50
Всем привет!
после команды:
sudo -u postgres ./pg_resetxlog -f /data/postgresql/pprod_9.6/
база перестала запускаться и выдает след ошибку:
2018-10-12 17:14:57 MSK [30125]: [1-1]FATAL: database files are incompatible with server
2018-10-12 17:14:57 MSK [30125]: [2-1]DETAIL: The database cluster was initialized with PG_CONTROL_VERSION 937, but the server was compiled with PG_CONTROL_VERSION 960.
Кто-то сталкивался с этим? Как можно пофиксить? База действительно раньше была 9.3, но уже давно обновлена до 9.6
неактуально, разобрался

Terminator
12.10.2018
16:03:30
Kir Lin будет жить. Поприветствуем!

Кондр
12.10.2018
16:28:12
Почему в pg в update нельзя установить limit?