Size: a a a

pgsql – PostgreSQL

2021 February 10

кн

коля николай... in pgsql – PostgreSQL
Zheka_13
так а id это праймари кей как бы должен быть
да
источник

Z

Zheka_13 in pgsql – PostgreSQL
а зачем индекс на него тогда?
источник

Z

Zheka_13 in pgsql – PostgreSQL
is not null - оно ж не может быть нулом никогда
источник

кн

коля николай... in pgsql – PostgreSQL
вру, это не пк
источник

Z

Zheka_13 in pgsql – PostgreSQL
наверное таблица большая.
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
так может там куча null-ов которые приходится скипать? Или просто куча мусора (старых версий) скопилось?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
коля николай
Приветтсвую, подскажите, в чем проблема. Запрос: select * from item order by id limit 1

Limit  (cost=0.43..0.68 rows=1 width=1565) (actual time=24571.209..24571.210 rows=1 loops=1)
 Buffers: shared hit=2776607 read=30031 written=1725
 ->  Index Scan using item_id_idx on item  (cost=0.43..1019570.18 rows=4063383 width=1565) (actual time=24571.208..24571.208 rows=1 loops=1)
       Buffers: shared hit=2776607 read=30031 written=1725
Planning time: 0.207 ms
Execution time: 24571.241 ms
сделайте индекс ON item (id) WHERE id IS NOT NULL
источник

Z

Zheka_13 in pgsql – PostgreSQL
может analyze сделать
источник

Z

Zheka_13 in pgsql – PostgreSQL
так он там уже есть судя по експлейну
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Miseo
А при физической репликации у меня же и секвенции перекинутся?

Я просто хочу перенести базу на второй сервер и дропнуть её на первом. сь одинаоквая. Версия тоже
для такого переноса лучше всего физическая, конечно
источник

M

Miseo in pgsql – PostgreSQL
Victor Yegorov
для такого переноса лучше всего физическая, конечно
Отлично. Спасибо )
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
коля николай
Вот еще инетресная штука:

explain (analyze, buffers) select min(id) from item


Result  (cost=0.69..0.70 rows=1 width=8) (actual time=45535.327..45535.327 rows=1 loops=1)
 Buffers: shared hit=2757593 read=182247 dirtied=253 written=11026
 InitPlan 1 (returns $0)
   ->  Limit  (cost=0.43..0.69 rows=1 width=8) (actual time=45535.317..45535.318 rows=1 loops=1)
         Buffers: shared hit=2757593 read=182247 dirtied=253 written=11026
         ->  Index Only Scan using item_id_idx on item  (cost=0.43..1087166.50 rows=4299775 width=8) (actual time=45535.314..45535.315 rows=1 loops=1)
               Index Cond: (id IS NOT NULL)
               Heap Fetches: 3087185
               Buffers: shared hit=2757593 read=182247 dirtied=253 written=11026
Planning time: 0.151 ms
Execution time: 45535.361 ms


Наличие хипов
покажите
\d item
источник

кн

коля николай... in pgsql – PostgreSQL
Victor Yegorov
сделайте индекс ON item (id) WHERE id IS NOT NULL
Не помог
Buffers: shared hit=694340 read=1265 written=23
источник

кн

коля николай... in pgsql – PostgreSQL
Yaroslav Schekin
покажите
\d item
\d item
Table "public.item"
Column  |            Type             | Collation | Nullable |                   Default                  
---------+-----------------------------+-----------+----------+---------------------------------------------
id      | bigint                      |           | not null | nextval('item_id_seq'::regclass)
item_id | bigint                      |           |          |
ts      | timestamp without time zone |           |          | now()
event   | character(1)                |           |          |
data    | jsonb                       |           |          |
Indexes:
   "item_id_idx" btree (id)
   "item_id_idx1" btree (id) WHERE id IS NOT NULL
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
Так id же not null!
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
коля николай
Вот еще инетресная штука:

explain (analyze, buffers) select min(id) from item


Result  (cost=0.69..0.70 rows=1 width=8) (actual time=45535.327..45535.327 rows=1 loops=1)
 Buffers: shared hit=2757593 read=182247 dirtied=253 written=11026
 InitPlan 1 (returns $0)
   ->  Limit  (cost=0.43..0.69 rows=1 width=8) (actual time=45535.317..45535.318 rows=1 loops=1)
         Buffers: shared hit=2757593 read=182247 dirtied=253 written=11026
         ->  Index Only Scan using item_id_idx on item  (cost=0.43..1087166.50 rows=4299775 width=8) (actual time=45535.314..45535.315 rows=1 loops=1)
               Index Cond: (id IS NOT NULL)
               Heap Fetches: 3087185
               Buffers: shared hit=2757593 read=182247 dirtied=253 written=11026
Planning time: 0.151 ms
Execution time: 45535.361 ms


Наличие хипов
А что возвращает, например:
SELECT MIN(id) AS min_id, MAX(id) AS max_id, COUNT(*) AS total_rows
 FROM item;
?
Ну и да, как написали выше, item_id_idx1 не нужен.
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
А если на этой табличке сделать vacuum full?
источник

кн

коля николай... in pgsql – PostgreSQL
Yaroslav Schekin
А что возвращает, например:
SELECT MIN(id) AS min_id, MAX(id) AS max_id, COUNT(*) AS total_rows
 FROM item;
?
Ну и да, как написали выше, item_id_idx1 не нужен.
842653630 843081119 427445
источник

кн

коля николай... in pgsql – PostgreSQL
Konstantin Knizhnik
А если на этой табличке сделать vacuum full?
ничего не помагает из вакуума, только truncate
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
коля николай
842653630 843081119 427445
Удалили много записей с предыдущими id, возможно?
Проще всего сделать:
VACUUM FULL item;
VACUUM ANALYZE item;

> ничего не помагает из вакуума, только truncate

Так, а "старые" транзакции (см. pg_stat_activity) есть (ну и так далее, но это скорее всего)?
источник