@pgsql

Страница 425 из 1062
Artem
09.08.2017
09:59:41
Коллеги, а кто как разворачивает слейв для потоковой репликации, через basebackup или rsync?

Alexey
09.08.2017
10:03:00
Коллеги, а кто как разворачивает слейв для потоковой репликации, через basebackup или rsync?
basebackup + rsync потом, чтоб архивные wal-логи тоже приехали на слейв. А то мастер убегает.

Nikolay
09.08.2017
10:13:24
basebackup + rsync потом, чтоб архивные wal-логи тоже приехали на слейв. А то мастер убегает.
https://postgrespro.ru/docs/postgrespro/9.5/app-pgbasebackup Ключевые слова: --xlog-method=stream --slot=имя_слота --write-recovery-conf

Google
Dmitriy
09.08.2017
10:21:54
Коллеги, приветствую. есть запрос: select * from flowlog where ( ((timestart between 1498856400 and 1502139600) and timeend >= 0) OR (timestart <= 1498856400 and timeend = 0) ) and outsideip = '<secret_ip>'::inet order by timestart,insideip,outsideip B есть индекс: CREATE INDEX timeindex ON public.flowlog USING btree (timeend, timestart) TABLESPACE cgnatdb; Индекс почему-то не используется, и в explain всегда seq scan. PG 9.6

Сейчас объем таблицы не большой, но запрос отрабатывает 2.3-2.5 секу

Таблица порядка гигабайта

Александр
09.08.2017
10:26:06
чисто из любопытства а если убрать одно из условий ора или сортировку то индекс начинает юзаться?

Dmitriy
09.08.2017
10:28:10
значит можно разбить на два запроса и через union склеить

или слишком костыльно?

Darafei
09.08.2017
10:29:10
так должно заработать, да

один скан - один интервал

Andrey
09.08.2017
10:31:13
Если бы использовали null вместо 0, запрос можно было бы переписать без or: between coalesce() and coalesce(), и создать функциональный индекс.

Darafei
09.08.2017
10:32:28
так себе затея

скорее похоже на tstzrange https://www.postgresql.org/docs/9.6/static/rangetypes.html и gist по нему

тогда можно для конца полноценно проставить бесконечность и проверять одно вхождение

Google
Darafei
09.08.2017
10:35:41
gis=# select '[2010-01-01 14:30, infinity)'::tstzrange; tstzrange ------------------------------------- ["2010-01-01 14:30:00+02",infinity) (1 row)

Mikhail
09.08.2017
10:56:41
Всем привет! В функции PQexecParams функция забирает владение параметрами, или их нужно самому очищать?

Anton [Mgn, az09@osm]
09.08.2017
10:57:50
пхп что-ли?

Andrey
09.08.2017
10:58:08
Mikhail
09.08.2017
11:12:34
Yura
09.08.2017
11:16:54
Коллеги, приветствую. есть запрос: select * from flowlog where ( ((timestart between 1498856400 and 1502139600) and timeend >= 0) OR (timestart <= 1498856400 and timeend = 0) ) and outsideip = '<secret_ip>'::inet order by timestart,insideip,outsideip B есть индекс: CREATE INDEX timeindex ON public.flowlog USING btree (timeend, timestart) TABLESPACE cgnatdb; Индекс почему-то не используется, и в explain всегда seq scan. PG 9.6
А какова семантика запроса? И почему индекс по (timeend, timestart) (а не по (timestart, timeend), например)? Впрочем, в виду того, что в постгрессе пока нет статистики по двум полям одновременно, для оптимизатора этот запрос выглядит как: вариант a) select * where timeend >= 0 вариант b) select * where timestart <= 1502139600 оба варианта ведут к логичному выводу: "всё равно нужно все записи просматривать, так зачем нам индекс?"

Anton [Mgn, az09@osm]
09.08.2017
11:17:58
Где?
а, сорян. это сишная либа

Mikhail
09.08.2017
11:45:33
Кто нибудь в курсе, как вставить в качестве параметра время для PQExecParams?

Может метод кто подскажет, как перевести time_t в строковое представление timestamp на C

Ildar
09.08.2017
11:47:46
Может метод кто подскажет, как перевести time_t в строковое представление timestamp на C
https://stackoverflow.com/questions/3053999/c-convert-time-t-to-string-with-format-yyyy-mm-dd-hhmmss

Mikhail
09.08.2017
11:48:03
да, только что нашел

:)

Жаль что нельзя как бинарную дату засунуть, только к строке получается

Nikolay
09.08.2017
11:50:09
Ух ты, а я мучался. Спасибо.
Да, и еще не забывайте про ключ: --checkpoint=fast

Ildar
09.08.2017
11:52:02
Кто нибудь в курсе, как вставить в качестве параметра время для PQExecParams?
а из клиентского приложения можно позвать time_t_to_timestamptz()? И потом TimestampTzGetDatum

Andrey
09.08.2017
12:08:36
Приветствую.. Ктонибудь подскажет, почему экскепшин. кинутый из constraint trigger проглатывается системой и его нигде не видно? Код: CREATE OR REPLACE FUNCTION public.trf_check_staff_dublicates ( ) RETURNS trigger AS $body$ BEGIN raise exception 'test'; END; $body$ LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER COST 100; CREATE CONSTRAINT TRIGGER nr_pmu_mo_staff_detail_tr_unq AFTER INSERT OR UPDATE ON public.nr_pmu_mo_staff_detail DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE public.trf_check_staff_dublicates();

Вопрос снят.. Баг EMS Postgresql Manager-a. c psql все норм: begin; BEGIN nr=# insert into nr_pmu_mo_staff_detail(staff_id,nr_pmu_depart_id, nr_pmu_depart_hospital_subdivision_id,post_id,total_rate) nr-# values(2,136161,1,150,1); INSERT 0 1 nr=# commit; ОШИБКА: test КОНТЕКСТ: функция PL/pgSQL trf_check_staff_dublicates(), строка 10, оператор RAISE

Mikhail
09.08.2017
13:01:42
Скажите, если я начал транзакцию, и у меня упало соединени, я могу ее закончить, или нужно будет заново начинать?

Сергей
09.08.2017
13:02:17
вроде как она откатится...

Google
Akzhan
09.08.2017
13:04:06
Заново

Mikhail
09.08.2017
13:04:40
Понял, спасибо!

А если я два раза вызываю BEGIN, что происходит с операциями до второго BEGIN, она сбрасываются?

Andrey
09.08.2017
13:30:12
Так нельзя сделать. Он скажет transaction already in progress.

Mikhail
09.08.2017
13:30:36
А, понял

спасибо

А у нас prepare сохраняются между коннектами?

Есть какой нибудь prepare if not exists?

Nikolay
09.08.2017
19:31:38
Агрессивный автовакуум + pg_repack
pg_repack – это extension, а значит его много куда просто невозможно поставить или очень трудозатратно. Есть ещё compact_table, pgcompacttable и pgcompact — торжество опенсорса, каждый решил пилить свою ветку вместо объединения усилий ? В итоге у каждого свои минусы, да и все трое подзаброшены, судя по коммитам и PR. Хотя это направление намного интереснее pg_repack, т.к. не надо ничего ставить кроме стандартного pgstattuple (а он есть даже у RDS). то есть, в целом с этим ситуация плачевна или я что-то упустил?

А у нас prepare сохраняются между коннектами?
https://www.postgresql.org/docs/9.6/static/sql-prepare.html — тут сразу видно, что 1) "PREPARE name [ ( data_type [, ...] ) ] AS statement" нет if not exists; 2) "Prepared statements only last for the duration of the current database session."

Nikolay
09.08.2017
19:42:17
?

Nikolay
09.08.2017
19:46:20
ну если серьёзно к составлению такого списка подходить, на первом месте будет идти create index concurrently

Darafei
09.08.2017
19:46:56
create index concurrently не сделает репак таблицы

индекс - да

Nikolay
09.08.2017
19:47:12
так самая большая беда не в распухании таблицы, а распухании индексов ?

и те же инструменты-заменители vacuum full дают ещё больше распухание. ну и сами же делают пересоздание индексов в итоге, т.к. там никаких больше рецептов пока нет

Айтуар
09.08.2017
19:49:03
Nikolay
09.08.2017
19:49:45
какая таблица? ?

Google
Nikolay
09.08.2017
19:50:45
таблиц много, проектов много, ситуации разные, беда у всех примерно одна, многие просто не замечают даже. Вот окметер или другие мониторилки добавят графики по вакууму — и замечающих сразу больше станет.

Darafei
09.08.2017
19:51:31
а таблица только на добавление данных?
переиспользование дыр в heap нормально хендлит fsm

Admin
ERROR: S client not available

Nikolay
09.08.2017
19:51:50
Айтуар, а все пухнут ? Из недавнего - у одного быстро растущего стартапа всякие разные ETL могут пачку DELETE отгрузить так, что никакая агрессия автовакуума уже не поможет.

Айтуар
09.08.2017
19:53:44
Да, видимо всё таки придётся пробовать чисто NoSQL БД для таких таблиц.

Nikolay
09.08.2017
19:54:23
?) это уже из разряда "придётся сменить род деятельности". Пора стартапу пивот делать

го все проверять свои индексы https://gist.githubusercontent.com/NikolayS/b6ec676ea63ab8d4db680a4c0d88e8bf/raw/5acc54c74d75549eedc4c5fada6099a2dff25bb5/02a_btree_bloat_simple.sql у кого как раздуло?

Darafei
09.08.2017
19:58:23
кажется, запрос не совместим с компрессией от pgpro

Айтуар
09.08.2017
20:16:33
го все проверять свои индексы https://gist.githubusercontent.com/NikolayS/b6ec676ea63ab8d4db680a4c0d88e8bf/raw/5acc54c74d75549eedc4c5fada6099a2dff25bb5/02a_btree_bloat_simple.sql у кого как раздуло?
| table_size | index_size | index_scans | waste_percent | waste +------------+------------+-------------+---------------+------------- | 13 GB | 12 GB | 0 | 39.0 | 4930 MB | 13 GB | 12 GB | 0 | 39.0 | 4930 MB вот пару самых толстых

Nikolay
09.08.2017
20:21:49
ну ведь не очень приятно же, да? но тут надо ещё учитывать, что у btree-индексов филлфактор по умолчанию 90. То есть там 10% места "резервируется"

Аггей
09.08.2017
21:18:46
ну ведь не очень приятно же, да? но тут надо ещё учитывать, что у btree-индексов филлфактор по умолчанию 90. То есть там 10% места "резервируется"
Микрооптимизация - выставлять филфактор в 100 для индекса первичного ключа по id (если id задается монотонно возрастающим сиквенсом)

Nikolay
09.08.2017
21:35:33
Кстати, да, логично и просто. Спасибо.

Хотя. При апдейтах куда туплы-то пихать? Будет сплит, а значит -- деградация скорости апдейтов. При 90 в одной странице можно несколько ссылок держать, на разные туплы для одного и того же id, тут не важно, моното он заполнялся или нет. Важно — будут ли у нас апдейты. 100 имеет смысл ставить, если апдейтов точно не будет.

Subb98
10.08.2017
06:25:36
Всем привет. Подскажите, кто работал с jsonb. Пытаюсь сохранить данные в БД (Doctrine), как массив. Вот так он отображается в терминале: Array ( [0] => ["hunting"] ) В БД значение отображается так: ["[\"hunting\"]"] Что нужно сделать, чтобы значение приходило в БД в таком виде: ["hunting"] ? Понимаю, что нужно произвести действия над массивом, не могу понять, какие именно. В json_encode пробовал, становилось только хуже.

Darafei
10.08.2017
06:27:34
а как выглядит тот insert, что генерирует твой фреймворк?

Subb98
10.08.2017
06:31:19
У меня Silex, стандартные методы доктрины.

Adikhanov
10.08.2017
06:31:31
Здравствуйте! Не подскажите как определить на какое событие сработал триггер?

Darafei
10.08.2017
06:32:36
У меня Silex, стандартные методы доктрины.
думаю, это вопрос больше по php, чем про базу :)

Google
Subb98
10.08.2017
06:32:56
Угу, уже в php чат тоже отписал )

/dev/null
10.08.2017
06:33:07
извиняюсь за офтоп

https://ru.stackoverflow.com/questions/700323/Шахматка-из-sql-запроса-в-firebirddb

помогите плиз

если конечно это вообще реально

Darafei
10.08.2017
06:33:36
помогите плиз
воспользуйся postgres и \crosstabview

/dev/null
10.08.2017
06:33:52
там firebird

Darafei
10.08.2017
06:34:25
данные можешь подтянуть https://github.com/ibarwick/firebird_fdw

Adikhanov
10.08.2017
06:37:27
Здравствуйте! Не подскажите как определить на какое событие сработал триггер?
https://www.postgresql.org/docs/9.0/static/plpgsql-trigger.html Вопрос не актуален

Mikhail
10.08.2017
10:05:15
Интел представили новые серверные SSD, в форм-факторе "линейки". С ними можно будет воткнуть в одноюнитовый сервер до петабайта стораджа. Ну и важно, что не забыли поддержать хот-своп. В общем пока все идет к тому, что скоро мы все окончательно уедем на SSD, они дешевеют и растут в размерах, и это здорово. Человечество начало копить и обрабатывать данные, а это требует быстрого стораджа за разумные деньги. http://www.anandtech.com/show/11702/intel-introduces-new-ruler-ssd-for-servers

Nikolay
10.08.2017
10:42:11
Реклама чЁли ?

Mikhail
10.08.2017
10:51:14
Новый форм фактор

Darafei
10.08.2017
10:51:20
я уж прямо потянулся к плюсомёту

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