@pgsql

Страница 1033 из 1062
Никита
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
https://youtu.be/QVEy15NcCkA?t=98 нашёл
как я понимаю, у них проблема возникла потому что данные генерировались пачками за одно время

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" это была фигня.

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
select regexp_replace(field, E'[\\n\\r]+', ' ', 'g' )
это только для ячейки? мне нужно для всех ячеек в колонке таблицы

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

Дмитрий
12.10.2018
11:55:12
ну так добавь остальные
а можно как-то перебором? там их дофига

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
Теперь сказали просто поднять мастер и пусть пока без всяких патрони работает, мол

Demuz
12.10.2018
12:32:49
Взял и перестал? Ну вангую что это инопланетяне. Я же не вижу логов. )
Да там жопа в логах. Что он и его собратья мол все в разных кластерах стали находиться.

Конечно сам перестал, если его не трогали после первых тестов)

Во всяком случае запорол я, так запорол)

@Aytuar, кстати, а сейчас дельное что-нибудь есть в мульти-мастерном мире?

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

Roman
12.10.2018
12:35:51
Мультимастер в постгрес сказка.
Это который в pgpro enterprise?

Айтуар
12.10.2018
12:36:52
Это который в pgpro enterprise?
Там свои ограничения. Нет мультимастер о котором все мечтают.

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

Mike Chuguniy
12.10.2018
12:49:34
Это который в pgpro enterprise?
Это который просто мультимастер, независимо от СУБД.

Григорий
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
Есть какое-нибудь элегантное решение, типа такого select 'drop table if exists "' || tablename || '" cascade;' from pg_tables; ?
А таблицы-то тут причём? Вы же схемы хотели удалить? > Потому как я так понимаю мне нужно перебрать все базы и выполнить в них drop schema if exists "public_bad" cascade; > Я прав или нет? Да, правы. Но на чистом SQL Вы это не сделаете, т.к. в PostgreSQL Вы всегда подключаетесь к конкретной базе. Поэтому ищите/пишите script для psql, например.

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

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
А разве он уже и так не возвращает? А вообще, что это у Вас за конструкция такая странная?
сейчас возвращает could not determine data type of parameter $2 Так то можно переделать на select * from todos where date >= CURRENT_DATE and (city_id = $1 or $2 is null) order by date asc

nvl(:city_id,-1) =-1 then 1
сейчас попробую

Алексей
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
сейчас возвращает could not determine data type of parameter $2 Так то можно переделать на select * from todos where date >= CURRENT_DATE and (city_id = $1 or $2 is null) order by date asc
Откуда $2-то взялся? У Вас же один параметр был? И вообще, что Вы пытаетесь сделать, в принципе?

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
т.е. очень похоже на то как тут 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
То есть, правильно @MasterZiv угадал. :) В общем: 1. Лучше не используйте такую форму записи (с OR), планировщик PostgreSQL этого не любит. 2. Научите своё API (или что у Вас там) передавать типизированные параметры. Кстати: > на клиенте послать опционально в зависимости от city_id ДВА РАЗНЫХ ЗАПРОСА пеплохая идея. Но, если Вы настаиваете, лучше попробуйте что-то в стиле: PREPARE foo(int, text) AS SELECT * FROM customer WHERE CASE WHEN $1 IS NULL THEN true ELSE customer_id > $1 END AND CASE WHEN $2 IS NULL THEN true ELSE customer = $2 END;

Yaroslav
12.10.2018
13:55:49
ха, интересный подход ?
Тоже вариант, но только если city_id NOT NULL... А, уже написали. ;)

Дмитрий
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: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?

Страница 1033 из 1062