172 похожих чатов

Ручное планирование запроса? а у pg разве есть хинты а-ля

как у оракла? я не сталкивался...

17 ответов

21 просмотр

Не то, чтобы их совсем не было (есть одно расшырение от японцэв) -- просто оно как-то на практике никогда и не нужно. Заставить оптимизатор понимать что происходит обычно можно другими средствами -- статистикой, костами, переделкой запросов.

Ну, я не в глобальном смысле "такое расшырение не нужно" (у меня тут мнение, что лучшэ чтобы было) -- но руки его ставить обычно не доходят, поскольку всё и так обходится.

Ale><ander- Автор вопроса
Ilya Anfimov
Ну, я не в глобальном смысле "такое расшырение не ...

Ок, а что бы в данном случае сделать, заменить ANY(ARRAY()) на IN -- это первое что я порывался сделать, ибо читается сильно лучше с IN, что ещё?

Ale><ander
Ок, а что бы в данном случае сделать, заменить ANY...

Для начала -- посмотреть с enable_seqscan = off; Кстати, это ssd, видимо? А random_page_cost в 1.2 (ну, плюс-минус, не 4) -- выставлен? Сервер вообще настроен? Я так подозреваю, что shared_buffers выставлены вменяемо -- а косты сколько поставлены?

Ale><ander- Автор вопроса
Ilya Anfimov
Для начала -- посмотреть с enable_seqscan = off; К...

По поводу дисков -- не уверен, возможно и ssd, random_page_cost -- дефолтный, т.е. 4, косты в дефолте, shared_buffers = 64GB

Ale><ander
По поводу дисков -- не уверен, возможно и ssd, ran...

Так вы проверьте -- что вам про диски-то обещают. И да, косты -- поставьте хотя бы из http://pgconfigurator.cybertec.at/

Ale><ander- Автор вопроса
Ilya Anfimov
Так вы проверьте -- что вам про диски-то обещают. ...

про диски не могу найти: там аппаратный рейд от адаптека, по управления не стоит...

Ale><ander
про диски не могу найти: там аппаратный рейд от ад...

random_page_cost не связан непосредственно с дисками; более того, среди других настроек это наименее важный параметр. См. https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server Если уж заниматься tuning — стоит начинать с конфигурирования OS, см. https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT (начиная с этого пункта, по крайней мере). А если Вы сейчас существенно измените настройки, то производительность базы может так же существенно, "неузнаваемо" измениться (и, возможно, что и к худшему в каких-то важных местах).

Ale><ander- Автор вопроса
Yaroslav Schekin
random_page_cost не связан непосредственно с диска...

тут уже было что-то подтюненно: vm.nr_hugepages = 33713 vm.overcommit_memory = 2

Ale><ander
тут уже было что-то подтюненно: vm.nr_hugepages =...

Похоже на правду. Ну а сам PostgreSQL использует huge pages, проверяли (на всякий случай)?

Ale><ander- Автор вопроса
Yaroslav Schekin
Похоже на правду. Ну а сам PostgreSQL использует h...

вроде есть: pmap $(pgrep postgres) | grep -E -- "-s- .*deleted" | sort -u 00002aaaaac00000 68788224K rw-s- anon_hugepage (deleted)

Ale><ander- Автор вопроса
Ilya Anfimov
Для начала -- посмотреть с enable_seqscan = off; К...

2021-12-08 23:49:42.749 MSK [4981] LOG: duration: 49060.885 ms plan: Query Text: UPDATE t1 SET time = now() WHERE ctid = ANY(ARRAY( SELECT t1.ctid FROM t1, (SELECT name, ip FROM t2) AS tmp WHERE t1.name = tmp.name AND t1.ip = tmp.ip ORDER BY t1.name, t1.ip FOR UPDATE)) Update on t1 (cost=554418.03..554458.16 rows=10 width=36) (actual time=49060.859..49060.882 rows=0 loops=1) Buffers: shared hit=5477394 read=1 dirtied=107813, local hit=181689 read=787022 dirtied=787022 written=787021, temp read=63986 written=64010 InitPlan 1 (returns $1) -> LockRows (cost=554348.76..554418.02 rows=5541 width=32) (actual time=6836.495..27580.167 rows=963299 loops=1) Buffers: shared hit=2074078 dirtied=63181, local hit=181689 read=787022 dirtied=787022 written=787021, temp read=63986 written=64010 -> Sort (cost=554348.76..554362.61 rows=5541 width=32) (actual time=6836.420..7131.890 rows=963299 loops=1) Sort Key: t1_1.name, t1_1.ip Sort Method: external merge Disk: 42136kB Buffers: shared hit=155111, local read=5412 dirtied=5412 written=5411, temp read=63986 written=64010 -> Hash Join (cost=28636.10..554004.22 rows=5541 width=32) (actual time=391.084..6322.387 rows=963299 loops=1) Hash Cond: ((t1_1.name = t2.name) AND (t1_1.ip = t2.ip)) Buffers: shared hit=155111, local read=5412 dirtied=5412 written=5411, temp read=56385 written=56385 -> Seq Scan on t1 t1_1 (cost=0.00..290161.57 rows=13505057 width=20) (actual time=0.006..1569.288 rows=10750328 loops=1) Buffers: shared hit=155111 -> Hash (cost=12285.24..12285.24 rows=687324 width=42) (actual time=360.583..360.586 rows=963299 loops=1) Buckets: 65536 Batches: 16 Memory Usage: 3674kB Buffers: local read=5412 dirtied=5412 written=5411, temp written=4582 -> Seq Scan on t2 (cost=0.00..12285.24 rows=687324 width=42) (actual time=0.025..157.180 rows=963299 loops=1) Buffers: local read=5412 dirtied=5412 written=5411 -> Tid Scan on t1 (cost=0.01..40.14 rows=10 width=36) (actual time=27934.451..28277.042 rows=963299 loops=1) TID Cond: (ctid = ANY ($1)) Buffers: shared hit=3037377 dirtied=63181, local hit=181689 read=787022 dirtied=787022 written=787021, temp read=63986 written=64010 такое чувство, что ничего не поменялось...

Ale><ander
2021-12-08 23:49:42.749 MSK [4981] LOG: duration:...

Видимо, куда-то не туда вставил. Поскольку seq scan на t1 при enable_seqscan = off ни почём бы не было. Слушай, ты, главное, свою t2 в сторону сохранил?

Ale><ander- Автор вопроса
Ilya Anfimov
Видимо, куда-то не туда вставил. Поскольку seq sca...

пытался, но не сохранилась, не понимаю, почему....

Ale><ander
пытался, но не сохранилась, не понимаю, почему....

Вероятно, потому жэ, почему seqscan не включилась -- запусукался старый код.

Ale><ander- Автор вопроса
Ilya Anfimov
Вероятно, потому жэ, почему seqscan не включилась ...

т.е. мой код оно увидело, а таблицу не создало, в логах ругань на новый код: https://t.me/pgsql/346820

Ale><ander
т.е. мой код оно увидело, а таблицу не создало, в ...

Ну, ок. Видимо, не в том месте скрипта поставил.

Похожие вопросы

Обсуждают сегодня

https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Ребят в СИ можно реализовать ООП?
Николай
33
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
core\config\database\connections\default.php На всякий случай проверь всё же файл <?php return [ 'driver' => env('DB_TYPE', 'mysql'), //$database_type 'host' => env('D...
Andrey K
2
Всем доброго вечера. Разрабатываю 32 раз. приложение в Delphi. Столкнулся с тем, что стандартный  TFilestream  не работает с большим файлом > 2 ГБайт (после вызова функции see...
Vadim Gl
16
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
добрый день. Подскажите, есть сайт на 1.4.7 и я хочу обновиться, особо ничего не меняя. мне выбирать версию 1.4.35 или третью ветку? и можно ли обновлять "как есть", или нужно...
Digital Cat
12
народ, плиз хелп, всю голову сломал себе уже... разве может быть так, что GetProcAddress( GetModuleHandle( "kernel32.dll" ), "SetThreadDescription" ) вернёт ненулевое значение...
Iluha Companets
12
Кто кодит под Лазарем на винде, у вас аналогично VCL переопределяются CreateWnd и CreateParams для конкретных классов контролов и все заданные флаги влияют?
А Андрей
11
Карта сайта