@pgsql

Страница 1019 из 1062
Anton [Mgn, az09@osm]
04.10.2018
14:31:50
Вот такие функции нужно создать, чтобы pgadmin3 смог спокойно соединиться к PostgreSQL 10: create function pg_last_xlog_receive_location() returns text as $$ select pg_last_wal_receive_lsn()::text $$ language sql; create function pg_last_xlog_replay_location() returns text as $$ select pg_last_wal_replay_lsn()::text $$ language sql; create function pg_is_xlog_replay_paused() returns bool as $$ select pg_is_wal_replay_paused() $$ language sql;

Terminator
04.10.2018
14:42:45
@s_ignatov будет жить. Поприветствуем!

Lestat -
04.10.2018
15:36:48
как выполнить 'plpgsql' код не создавая функцию

Google
Lestat -
04.10.2018
15:36:49
?

elfiki
04.10.2018
15:38:14
как выполнить 'plpgsql' код не создавая функцию
как-то так do $$ declare ...; begin ... end $$ language plpgsql;

abc
04.10.2018
15:38:41
Подскажите. Частичный (по условию) уникальный индекс не может участвовать в upsert операции?

Lestat -
04.10.2018
15:39:12
как-то так do $$ declare ...; begin ... end $$ language plpgsql;
а результат вывести из do ? в ходе расчетов пишу последней строкой select, ошибка предлагает мне использовать perform, но он выводит просто DO

MikaelBox
04.10.2018
15:42:58
do не позволяет возвращать наборы

Darafei
04.10.2018
15:44:05
Raise notice

Или в табличку положить

MikaelBox
04.10.2018
15:44:49
если виндовый клиент возможен, то построить схему базы графически со связями может помочь EMS PostgreSQL Manager

Mike Chuguniy
04.10.2018
15:45:42
схему рисую ручками в DIA, отладка головой вполне работает
А незнакомые базы - тоже головой, предварительно сняв дамп схемы?

MikaelBox
04.10.2018
15:46:34
А незнакомые базы - тоже головой, предварительно сняв дамп схемы?
pgModeler не особо поможет, т.к. он их строит криво

Mike Chuguniy
04.10.2018
15:46:56
А я за пгмоделер вообще молчу - мне его лень было собирать.

Google
MikaelBox
04.10.2018
15:47:10
бобра не пробовал для этих целей

Mike Chuguniy
04.10.2018
15:47:52
И да, EMS, который строит схемы со связями - он не платный ли случаем? Что-то мне говорит, что... А впрочем поиск вернёт нужный результат.

MikaelBox
04.10.2018
15:48:30
есть лайт версия, если мне не изменят память

Lestat -
04.10.2018
15:49:06
@Komzpa @MikaelBox @elfiki спасибо

Mike Chuguniy
04.10.2018
15:49:10
В том-то и дело, умеет ли бесплатная версия рисовать схемы со связями - я сейчас не помню, врать не буду.

Lestat -
04.10.2018
15:49:12
Dmitry
04.10.2018
16:34:39
Как же не любят многие платить за коммерческий софт. Как это мило, когда за табуретки и пенные напитки платить - это норма, а как софт, так подавай бесплатно. Open Source завоевал сердца. И мозги.

Terminator
04.10.2018
18:16:18
@AveVM будет жить. Поприветствуем!

Anton [Mgn, az09@osm]
04.10.2018
18:30:50
иногда даже за бесплатные аналоги платить не стыдно

Mike Chuguniy
04.10.2018
18:37:19
А ещё EMS, по крайней мере в июле не умеет git в принципе. Т.е совсем. Ну и для зачем козе баян, хучь за деньги, хучь бесплатно.

Dmitry
04.10.2018
18:38:08
Зачем платить за что-то, чему есть бесплатные аналоги? Ну вот зачем?
Справедливый и логичный вопрос. Другое дело, зачем быть одуванчиком и делать работу за бесплатно? Вот тут странно.

Mike Chuguniy
04.10.2018
18:39:33
Dmitry
04.10.2018
18:39:57
Mike Chuguniy
04.10.2018
19:00:26
Yaroslav
04.10.2018
19:37:20
так и сделал)
refcursor/fetch ещё можно использовать. Вот так, примерно: BEGIN; DO $$ DECLARE c refcursor := 'foo'; BEGIN OPEN c FOR SELECT * FROM orders ORDER BY id; END; $$; FETCH ALL FROM foo; COMMIT;

Google
Lestat -
04.10.2018
19:38:50
думается по умолчанию автокоммит стоит

Yaroslav
04.10.2018
19:40:53
коммит только смущает
Там же в начале BEGIN [TRANSACTION]; Т.е. да, в транзакции нужно использовать.

Yaroslav
04.10.2018
19:51:03
увидел, можно же опустить ?)
Нет, обычные курсоры работают только пределах одной транзакции. Исключение — WITH HOLD.

Terminator
04.10.2018
20:38:38
@iiiiiiiiiiif будет жить. Поприветствуем!

??Suffer
04.10.2018
20:40:55
create table tags ( doc_id serial PRIMARY KEY , words text[] not null default '{}' ); create index doc_tags_id_tags on tags using gin(words); EXPLAIN (ANALYZE, BUFFERS) select * from tags where words && array['43NTJ4FO98U0', '218SUYE228OBW'];

https://explain.depesz.com/s/i0S

это можно ускорить?

почему блоки красные?

S
04.10.2018
20:54:16
Т.е. вы будете 3X иметь эти данные : database buffers, system page cache, tmpfs
tmpfs сделан на основе page cache, мне кажется вряд ли linux настолько глупый что будет хранить одну и ту же страницу два раза

Yaroslav
04.10.2018
21:11:55
это можно ускорить?
По-моему, и так неплохо. Вы ANALYZE таблицы делали?

??Suffer
04.10.2018
21:14:41
хм

Дропнул индекс, создал снова и все начало летать

https://explain.depesz.com/s/Nw3D

Yaroslav
04.10.2018
21:18:24
Дропнул индекс, создал снова и все начало летать
А раньше Вы его как создавали, ради интереса? И ещё раз: Вы ANALYZE таблицы делали?

??Suffer
04.10.2018
21:20:13
> Вы ANALYZE таблицы делали? да

Grigory
04.10.2018
21:23:59
Т.е. вы будете 3X иметь эти данные : database buffers, system page cache, tmpfs
То, что лежит в tmpfs, не попадает в файловый кэш

Yaroslav
04.10.2018
21:24:20
> Вы ANALYZE таблицы делали? да
Да, оценки всё равно как-то не очень... но, с другой стороны, ну и что? ;) (Тут у планировщика выбор всё равно небогатый: либо этот индекс, либо seqscan.) Да, кстати... Вы вроде раньше план с другой константой показывали?

??Suffer
04.10.2018
21:25:11
Что значит константа?

Google
Volodymyr Kostyrko
04.10.2018
21:25:49
218SUYE228OBW

??Suffer
04.10.2018
21:26:06
да, другое значения

Volodymyr Kostyrko
04.10.2018
21:26:24
Если по статистике оно видит что какого-то значения в таблице нет - оно его и искать не будет.

Yaroslav
04.10.2018
21:26:55
Что значит константа?
В первом плане: (words && '{43NTJ4FO98U0,218SUYE228OBW}'::text[]) В этом: (words && '{43NTJ4FO98U0,GIT1}'::text[]) Может, при поиску по индексу действительно существенно отличается кол-во просматриваемых pages...

Если по статистике оно видит что какого-то значения в таблице нет - оно его и искать не будет.
В смысле? Наоборот, будет, конечно, причём почти наверняка по индексу...

Volodymyr Kostyrko
04.10.2018
21:29:00
Я не об этом, там количество buffer hits показывает что оставшиеся значения не слишком популярны.

Yaroslav
04.10.2018
21:30:27
Я не об этом, там количество buffer hits показывает что оставшиеся значения не слишком популярны.
Ну, я, например, не уверен. Как вообще можно сравнивать планы с разными константами, причём один до, а другой после перестроения индекса?

??Suffer
04.10.2018
21:31:18
Если по статистике оно видит что какого-то значения в таблице нет - оно его и искать не будет.
Думаю это не тот вариант. Скорость возростает после пересоздания индекса

Volodymyr Kostyrko
04.10.2018
21:32:00
А вы попробуйте изначальный набор параметров.

Yaroslav
04.10.2018
21:33:01
Думаю это не тот вариант. Скорость возростает после пересоздания индекса
Да, вот в этих screenshot-ах, которые Вы сейчас привели, это действительно видно.

Volodymyr Kostyrko
04.10.2018
21:33:02
Если в индексе искать то чего там нет результат оно выдаст быстро. В противном случае на каждое совпадение добавится материализация.

??Suffer
04.10.2018
21:35:52
PostgreSQL 10.5 (Ubuntu 10.5-0ubuntu0.18.04) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0, 64-bit

Yaroslav
04.10.2018
21:38:10
Что делать в таких случаях?
Вполне возможно, что дело в этом: https://www.postgresql.org/docs/current/static/gin-implementation.html#GIN-FAST-UPDATE

??Suffer
04.10.2018
21:40:01
select * gin_clean_pending_list(); syntax error at or near "gin_clean_pending_list" LINE 1: select * gin_clean_pending_list()

Volodymyr Kostyrko
04.10.2018
21:42:09
from

или звезду убрать

Yaroslav
04.10.2018
21:42:31
select * gin_clean_pending_list(); syntax error at or near "gin_clean_pending_list" LINE 1: select * gin_clean_pending_list()
"Изобретаете" синтаксис? Не стоит, PostgreSQL не оценил. ;)

??Suffer
04.10.2018
21:43:37
select gin_clean_pending_list(); function gin_clean_pending_list() does not exist LINE 1: select gin_clean_pending_list() ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.

Yaroslav
04.10.2018
21:44:58
select gin_clean_pending_list(); function gin_clean_pending_list() does not exist LINE 1: select gin_clean_pending_list() ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
\df gin_clean_pending_list Name | Result data type | Argument data types ------------------------+------------------+--------------------- gin_clean_pending_list | bigint | regclass А у Вас?

Google
Yaroslav
04.10.2018
21:45:49
Я намекаю на "Argument data types" (и ведь Вы вроде документацию прочитали :( ).

??Suffer
04.10.2018
21:48:20
Я не читал

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