ČauMám tady problém, na který nestačím a potřeboval bych nasměrovat.V databázi nám začaly trvat (i jednoduché) dotazy uplný nesmysl (pár set řádků, jednoduchý selekt s order by podle PK malé jednotky sekund), tak za mnou přišli kolegové, jestli něco nevykoukám.S vydatnou pomocí chatgpt jsem se dopracoval k tomu, že tabulka má giga, index má čtvrt giga (při sedmistech záznamech) a v tabulce je 94 procent dead tuples.VACUUM FULL nepomohlo, VACUUM FREEZE taky ne (jak je to možný?).
V databázi máme streaming repliku (repmgr a pgpool), tabulky, kterých se to týká jsou často dávkově přepisovány (někdy i stylem nalejt vylejt). AUTOVACUUM běží. hot_standby_feedback máme off. Logická replikace (pokud vím a nejsem si tím zcela jist) tak tam neběží.Potřebuju nasměrovat, jak zjistím co děláme blbě, že se tohle děje a jak to vyřeším. Podle pg_stat_activity (na primáře) nevidim aktivní dotaz, který by zasahoval do těchto tabulek. Na stendbajku se nedostanu.Dál bych potřeboval zjistit, jak se zbavím aktuálního zákysu. Pokud existuje jiná cesta, než to celý zadumpovat a vyrobit si to vedle (což mi radí AI a podle mě je to příliš poraženecké).
DíkyJe;
--JelenStarší čeledín datovýho chlíva
--
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „PostgreSQL-cz“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu postgresql-c...@googlegroups.com.
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/CAAYBy8YJqZA63LsqASSFMJp1XCxcychbuuCrMST_E%3D95aQzA0g%40mail.gmail.com.
Ahojst 19. 11. 2025 v 9:40 odesílatel Jan Michálek <godzil...@gmail.com> napsal:ČauMám tady problém, na který nestačím a potřeboval bych nasměrovat.V databázi nám začaly trvat (i jednoduché) dotazy uplný nesmysl (pár set řádků, jednoduchý selekt s order by podle PK malé jednotky sekund), tak za mnou přišli kolegové, jestli něco nevykoukám.S vydatnou pomocí chatgpt jsem se dopracoval k tomu, že tabulka má giga, index má čtvrt giga (při sedmistech záznamech) a v tabulce je 94 procent dead tuples.VACUUM FULL nepomohlo, VACUUM FREEZE taky ne (jak je to možný?).VACUUM FREEZE pomoct nemusi, ale ze nepomuze VACUUM FULL to je hodne divne (tomu bych skoro neveril)
V databázi máme streaming repliku (repmgr a pgpool), tabulky, kterých se to týká jsou často dávkově přepisovány (někdy i stylem nalejt vylejt). AUTOVACUUM běží. hot_standby_feedback máme off. Logická replikace (pokud vím a nejsem si tím zcela jist) tak tam neběží.Potřebuju nasměrovat, jak zjistím co děláme blbě, že se tohle děje a jak to vyřeším. Podle pg_stat_activity (na primáře) nevidim aktivní dotaz, který by zasahoval do těchto tabulek. Na stendbajku se nedostanu.Dál bych potřeboval zjistit, jak se zbavím aktuálního zákysu. Pokud existuje jiná cesta, než to celý zadumpovat a vyrobit si to vedle (což mi radí AI a podle mě je to příliš poraženecké).zkontroluj jestli ti neco neblokuje promazavani dead tuples(2025-11-19 09:56:02) postgres=# VACUUM VERBOSE pg_class ;
INFO: vacuuming "postgres.pg_catalog.pg_class"
INFO: finished vacuuming "postgres.pg_catalog.pg_class": index scans: 0
pages: 0 removed, 14 remain, 14 scanned (100.00% of total), 0 eagerly scanned
tuples: 0 removed, 422 remain, 0 are dead but not yet removable
removable cutoff: 761, which was 0 XIDs old when operation ended
new relfrozenxid: 761, which is 11 XIDs ahead of previous value
frozen: 0 pages from table (0.00% of total) had 0 tuples frozen
visibility map: 0 pages set all-visible, 0 pages set all-frozen (0 were all-visible)
index scan not needed: 0 pages from table (0.00% of total) had 0 dead item identifiers removed
avg read rate: 63.723 MB/s, avg write rate: 12.745 MB/s
buffer usage: 40 hits, 5 reads, 1 dirtied
WAL usage: 1 records, 1 full page images, 7923 bytes, 7804 full page image bytes, 0 buffers full
system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s
VACUUMdohledej radek s tuples: 0 removed, 422 remain, 0 are dead but not yet removableKlicova je ta cast "0 are dead but not yet removable". Za provozu tam prakticky nikdy nebudes mit 0, ale pokud by tam bylo nejake velke cislo, ktere se navic zvetsuje, tak mas problem.
Co muze zpusobovat, ze mrtve verze nejsou odstranitelné?
1. zapomenuty nepouzivany replikacni slot2. otevrena transakce3. neukoncena 2pc transakce4. neuzavrena transakce na replikce s hot_standby_feedback5. nedobihajici (padajici) vacuum - zkontrolovat logy6. podle mne by to mohla delat i zaseknuta logicka replikace - mozna by to mohlo byt videt v pg_stat_replication nebo pg_stat_replication_slotPavel
----DíkyJe;
--JelenStarší čeledín datovýho chlíva
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „PostgreSQL-cz“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu postgresql-c...@googlegroups.com.
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/CAAYBy8YJqZA63LsqASSFMJp1XCxcychbuuCrMST_E%3D95aQzA0g%40mail.gmail.com.
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „PostgreSQL-cz“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu postgresql-c...@googlegroups.com.
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/CAFj8pRCURa586d41np2HQ2BWsbXKUbbfRr2aMynTy%3DJVjH8BEA%40mail.gmail.com.
Díky za reakci Pavlest 19. 11. 2025 v 10:03 odesílatel Pavel Stehule <pavel....@gmail.com> napsal:Ahojst 19. 11. 2025 v 9:40 odesílatel Jan Michálek <godzil...@gmail.com> napsal:ČauMám tady problém, na který nestačím a potřeboval bych nasměrovat.V databázi nám začaly trvat (i jednoduché) dotazy uplný nesmysl (pár set řádků, jednoduchý selekt s order by podle PK malé jednotky sekund), tak za mnou přišli kolegové, jestli něco nevykoukám.S vydatnou pomocí chatgpt jsem se dopracoval k tomu, že tabulka má giga, index má čtvrt giga (při sedmistech záznamech) a v tabulce je 94 procent dead tuples.VACUUM FULL nepomohlo, VACUUM FREEZE taky ne (jak je to možný?).VACUUM FREEZE pomoct nemusi, ale ze nepomuze VACUUM FULL to je hodne divne (tomu bych skoro neveril)
main=# SELECT *
FROM pgstattuple('rl_table');
┌────────────┬─────────────┬───────────┬───────────────┬──────────────────┬────────────────┬────────────────────┬────────────┬──────────────┐
│ table_len │ tuple_count │ tuple_len │ tuple_percent │ dead_tuple_count │ dead_tuple_len │ dead_tuple_percent │ free_space │ free_percent │
╞════════════╪═════════════╪═══════════╪═══════════════╪══════════════════╪════════════════╪════════════════════╪════════════╪══════════════╡
│ 1064542208 │ 671 │ 199522 │ 0.02 │ 3413377 │ 1008836906 │ 94.77 │ 21575388 │ 2.03 │
└────────────┴─────────────┴───────────┴───────────────┴──────────────────┴────────────────┴────────────────────┴────────────┴──────────────┘
(1 row)
main=# VACUUM FULL rl_table;
VACUUM
main=# SELECT *
FROM pgstattuple('rl_table');
┌────────────┬─────────────┬───────────┬───────────────┬──────────────────┬────────────────┬────────────────────┬────────────┬──────────────┐
│ table_len │ tuple_count │ tuple_len │ tuple_percent │ dead_tuple_count │ dead_tuple_len │ dead_tuple_percent │ free_space │ free_percent │
╞════════════╪═════════════╪═══════════╪═══════════════╪══════════════════╪════════════════╪════════════════════╪════════════╪══════════════╡
│ 1064542208 │ 671 │ 199522 │ 0.02 │ 3413377 │ 1008836906 │ 94.77 │ 21575388 │ 2.03 │
└────────────┴─────────────┴───────────┴───────────────┴──────────────────┴────────────────┴────────────────────┴────────────┴──────────────┘
(1 row)
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/CAAYBy8Yv1HKOOuY_dun%2BGHfz3YFXr%2BStxJv%2BiFDpFGZ6B%3DinJg%40mail.gmail.com.
--
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny PostgreSQL-cz ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu postgresql-c...@googlegroups.com.
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/8133.1763545237%40localhost.
--
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „PostgreSQL-cz“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu postgresql-c...@googlegroups.com.
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/883485dc-1f89-4f8e-a49c-da0a80f8e641n%40googlegroups.com.
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/CAFj8pRBbApxa-8YJ7OdFROQvC0tsH%2BC5ksZ%3D%3D1sWxpF33J%2BJ0A%40mail.gmail.com.
Našel jsem tam tohle
┌─[ RECORD 1 ]─────┬───────────────────────────────┐
│ datid │ │
│ datname │ │
│ pid │ 1261817 │
│ leader_pid │ │
│ usesysid │ 10 │
│ usename │ postgres │
│ application_name │ │
│ client_addr │ │
│ client_hostname │ │
│ client_port │ │
│ backend_start │ 2025-10-25 17:33:57.293116+02 │
│ xact_start │ │
│ query_start │ │
│ state_change │ │
│ wait_event_type │ Activity │
│ wait_event │ LogicalLauncherMain │
│ state │ │
│ backend_xid │ │
│ backend_xmin │ │
│ query_id │ │
│ query │ │
│ backend_type │ logical replication launcher │
└──────────────────┴───────────────────────────────┘
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/CAAYBy8ZqtwfHFo9mGMdGeCQbHd-kw68nCiBmwCvyGaQ3w-VFag%40mail.gmail.com.
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/CAFj8pRDzs8zGG%3Dt0gJbdHbvDkgMGDx20QZz3Dw4Fm0yrWscXag%40mail.gmail.com.
Ahoj, všem.Problém jsem vyřešil, visel mi tam v pg_stat_activity dotaz, kterej jsem si myslel, že ničemu neškodí (protože nesahal do žádných tabulek), ale nakonec jsem ho stejně zabil a to vacuum odblokovalo.Díky všem za pomoc.
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/CAAYBy8a9EdJKxygiC3857rBCSSb1098ho5TLv5ypPonpf5O9Dg%40mail.gmail.com.
Tuto diskuzi najdete na adrese https://groups.google.com/d/msgid/postgresql-cz/CAAYBy8a9EdJKxygiC3857rBCSSb1098ho5TLv5ypPonpf5O9Dg%40mail.gmail.com.