Size: a a a

pgsql – PostgreSQL

2021 March 24

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
QUERY PLAN                                
-------------------------------------------------------------------------
Insert on table  (cost=0.00..10.00 rows=500 width=1350)
  ->  Values Scan on "*VALUES*"  (cost=0.00..10.00 rows=500 width=1350)
(2 rows)

Time: 20.070 ms
Так, а "EXPLAIN (SUMMARY) INSERT INTO ..."?
Да и вообще, если есть вариант на самом деле выполнить вставку, то лучше посмотреть на полный EXPLAIN... какая это версия PostgreSQL, кстати?
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
Так, а "EXPLAIN (SUMMARY) INSERT INTO ..."?
Да и вообще, если есть вариант на самом деле выполнить вставку, то лучше посмотреть на полный EXPLAIN... какая это версия PostgreSQL, кстати?
12 версия (если что, в докере)

Под полным EXPLAIN что подразумевается? С SUMMARY?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
12 версия (если что, в докере)

Под полным EXPLAIN что подразумевается? С SUMMARY?
С реальным выполнением вставки. Т.е. EXPLAIN (ANALYZE, VERBOSE, BUFFERS, SETTINGS) INSERT INTO ...
Названия полей можете стереть. ;)
А вот timing нужен.
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
С реальным выполнением вставки. Т.е. EXPLAIN (ANALYZE, VERBOSE, BUFFERS, SETTINGS) INSERT INTO ...
Названия полей можете стереть. ;)
А вот timing нужен.
Понял
Сейчас сделаю
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
С реальным выполнением вставки. Т.е. EXPLAIN (ANALYZE, VERBOSE, BUFFERS, SETTINGS) INSERT INTO ...
Названия полей можете стереть. ;)
А вот timing нужен.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------
Insert on public.table  (cost=0.00..10.00 rows=500 width=1350) (actual time=2581.589..2581.590 rows=0 loops=1)
  Buffers: shared hit=5865 read=317 dirtied=328 written=234
  ->  Values Scan on "*VALUES*"  (cost=0.00..10.00 rows=500 width=1350) (actual time=0.019..4.296 rows=500 loops=1)
        Output: "*VALUES*".column1, "*VALUES*".column2, "*VALUES*".column3, "*VALUES*".column4, "*VALUES*".column5, "*VALUES*".column6, "*VALUES*".column7, timezone('utc'::text, now()), "*VALUES*".column8, "*VALUES*".column9, "*VALUES*".column10, "*VALUES*".column11, nextval('table_id_seq'::regclass), "*VALUES*".column12
        Buffers: shared hit=500
Planning Time: 5.717 ms
Execution Time: 2581.653 ms
(7 rows)

Time: 2726.719 ms (00:02.727)
источник

R

Roman in pgsql – PostgreSQL
как открыть файл с таким расширением? db_schema.pgerd
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------
Insert on public.table  (cost=0.00..10.00 rows=500 width=1350) (actual time=2581.589..2581.590 rows=0 loops=1)
  Buffers: shared hit=5865 read=317 dirtied=328 written=234
  ->  Values Scan on "*VALUES*"  (cost=0.00..10.00 rows=500 width=1350) (actual time=0.019..4.296 rows=500 loops=1)
        Output: "*VALUES*".column1, "*VALUES*".column2, "*VALUES*".column3, "*VALUES*".column4, "*VALUES*".column5, "*VALUES*".column6, "*VALUES*".column7, timezone('utc'::text, now()), "*VALUES*".column8, "*VALUES*".column9, "*VALUES*".column10, "*VALUES*".column11, nextval('table_id_seq'::regclass), "*VALUES*".column12
        Buffers: shared hit=500
Planning Time: 5.717 ms
Execution Time: 2581.653 ms
(7 rows)

Time: 2726.719 ms (00:02.727)
Хмм... т.е. все настройки postgres по умолчанию? Что насчёт shared_buffers?
Потому что тут видно, что происходят "реальные" (с т.з. PostgreSQL) чтение и запись на диск, что не полезно при работе на HDD, мягко говоря. ;)

И да (я, вроде, уже спрашивал) — \dt+ таблицы и \di+ этих индексов можете показать?
источник

s

shamil in pgsql – PostgreSQL
всем привет
посоветуйте курсы по postgresql на udemy пожалуйста
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
Хмм... т.е. все настройки postgres по умолчанию? Что насчёт shared_buffers?
Потому что тут видно, что происходят "реальные" (с т.з. PostgreSQL) чтение и запись на диск, что не полезно при работе на HDD, мягко говоря. ;)

И да (я, вроде, уже спрашивал) — \dt+ таблицы и \di+ этих индексов можете показать?
Сейчас

Насчёт таблиц: там только одна
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
Сейчас

Насчёт таблиц: там только одна
Да, я же и написал — \dt+ [этой] таблицы, и \di+ этих индексов (там же их три).
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
Да, я же и написал — \dt+ [этой] таблицы, и \di+ этих индексов (там же их три).
А
кк
источник

SM

Setplus Mac in pgsql – PostgreSQL
List of relations
Schema |   Name   | Type  |  Owner   | Size  | Description
--------+----------+-------+----------+-------+-------------
public | table | table | postgres | 45 GB |
(1 row)

                             List of relations
Schema |     Name      | Type  |  Owner   |  Table   |  Size   | Description
--------+---------------+-------+----------+----------+---------+-------------
public | table_pkey | index | postgres | table| 2439 MB |
public | table_c_idx | index | postgres | table | 4135 MB |
public | table_e_idx | index | postgres | table | 13 GB |
(1 row)

(1 row)
источник

SM

Setplus Mac in pgsql – PostgreSQL
shared_buffer почему-то был 128Mb, хотя я устанавливал его в 2 Gb...
Сейчас рестартнул докер и проверил конфиг: теперь там действительно 2гига
источник

SM

Setplus Mac in pgsql – PostgreSQL
Сейчас опять выполню запрос

(если что, все параметры в конфиге выставлял согласно pg_tune)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
List of relations
Schema |   Name   | Type  |  Owner   | Size  | Description
--------+----------+-------+----------+-------+-------------
public | table | table | postgres | 45 GB |
(1 row)

                             List of relations
Schema |     Name      | Type  |  Owner   |  Table   |  Size   | Description
--------+---------------+-------+----------+----------+---------+-------------
public | table_pkey | index | postgres | table| 2439 MB |
public | table_c_idx | index | postgres | table | 4135 MB |
public | table_e_idx | index | postgres | table | 13 GB |
(1 row)

(1 row)
С виду всё более-менее (хотя точно не скажу, я путаюсь в названиях). ;)
У table_e_idx точно "вменяемый" размер (если попробовать запросы по bloat... или вообще создать другой с тем же определением, если есть время и пространство, и сравнить размеры)?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
Сейчас опять выполню запрос

(если что, все параметры в конфиге выставлял согласно pg_tune)
Но никакие не выставились, судя по тому плану, который Вы показали.
SETTINGS выводит все параметры, относящиеся к планированию, у которых значение не default — а в том плане не было ничего.
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
Но никакие не выставились, судя по тому плану, который Вы показали.
SETTINGS выводит все параметры, относящиеся к планированию, у которых значение не default — а в том плане не было ничего.
Сейчас выполнил запрос снова

при этом значения некоторых параметров следующие:

max_connections = 100
shared_buffers = 2GB
effective_cache_size = 6GB
maintenance_work_mem = 512MB
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 4
effective_io_concurrency = 2
work_mem = 7061kB
min_wal_size = 1GB
max_wal_size = 4GB
max_worker_processes = 6
max_parallel_workers_per_gather = 3
max_parallel_workers = 6
max_parallel_maintenance_workers = 3

Запрос выполнился за секунду
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
С виду всё более-менее (хотя точно не скажу, я путаюсь в названиях). ;)
У table_e_idx точно "вменяемый" размер (если попробовать запросы по bloat... или вообще создать другой с тем же определением, если есть время и пространство, и сравнить размеры)?
Насчёт вменяемости не знаю, не буду врать)

Насчёт запросы по bloat можете пояснить?
Не очень понял.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
Сейчас выполнил запрос снова

при этом значения некоторых параметров следующие:

max_connections = 100
shared_buffers = 2GB
effective_cache_size = 6GB
maintenance_work_mem = 512MB
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 4
effective_io_concurrency = 2
work_mem = 7061kB
min_wal_size = 1GB
max_wal_size = 4GB
max_worker_processes = 6
max_parallel_workers_per_gather = 3
max_parallel_workers = 6
max_parallel_maintenance_workers = 3

Запрос выполнился за секунду
Это Вы из pg_settings взяли текущие значения? Или это просто то, что Вы пытались поставить?
В общем, посмотрите полный EXPLAIN ещё раз — там это (часть этого) должна быть.

> Насчёт запросы по bloat можете пояснить?

Прямо погуглите по postgres index bloat query или вроде того, их везде полно, по идее.
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
Это Вы из pg_settings взяли текущие значения? Или это просто то, что Вы пытались поставить?
В общем, посмотрите полный EXPLAIN ещё раз — там это (часть этого) должна быть.

> Насчёт запросы по bloat можете пояснить?

Прямо погуглите по postgres index bloat query или вроде того, их везде полно, по идее.
Нет, из postgresql.conf взял выдержку.

Насчёт EXPLAIN
вот что сейчас есть

Insert on public.table  (cost=0.00..10.00 rows=500 width=1350) (actual time=1368.299..1368.300 rows=0 loops=1)
  Buffers: shared hit=5962 read=229 dirtied=396 written=85
  ->  Values Scan on "*VALUES*"  (cost=0.00..10.00 rows=500 width=1350) (actual time=0.030..3.947 rows=500 loops=1)
        Output: "*VALUES*".column1, "*VALUES*".column2, "*VALUES*".column3, "*VALUES*".column4, "*VALUES*".column5, "*VALUES*".column6, "*VALUES*".column7, timezone('utc'::text, now()), "*VALUES*".column8, "*VALUES*".column9, "*VALUES*".column10, "*VALUES*".column11, nextval('table_id_seq'::regclass), "*VALUES*".column12
        Buffers: shared hit=500 dirtied=1
Settings: effective_cache_size = '6GB', effective_io_concurrency = '2', max_parallel_workers = '6', max_parallel_workers_per_gather = '3', work_mem = '7061kB'
Planning Time: 5.663 ms
Execution Time: 1368.360 ms
(8 rows)

Time: 1409.785 ms (00:01.410)
источник