Fórum Root.cz

Hlavní témata => Server => Téma založeno: e3k 10. 05. 2021, 09:43:02

Název: Mazanie duplicit v Icinga db - zlepšenie sub selectu
Přispěvatel: e3k 10. 05. 2021, 09:43:02
Ahoj,

musim pomazat duplicity (bug) v icinga_commenthistory (5000000 zaznamov).

Vymyslel som to tak ze zistim maximalne id v subselecte a tieto ID nebudem mazat. Zial bezi to neskutocne dlho.

Kód: [Vybrat]
select max(commenthistory_id)
from icinga_commenthistory
group by comment_time, comment_data

Nejaky napad jak toto urychlit?
Název: Re:Mazanie duplicit v Icinga db - zlepšenie sub selectu
Přispěvatel: Pavel Stěhule 10. 05. 2021, 11:26:44
Ahoj,

musim pomazat duplicity (bug) v icinga_commenthistory (5000000 zaznamov).

Vymyslel som to tak ze zistim maximalne id v subselecte a tieto ID nebudem mazat. Zial bezi to neskutocne dlho.

Kód: [Vybrat]
select max(commenthistory_id)
from icinga_commenthistory
group by comment_time, comment_data

Nejaky napad jak toto urychlit?

Co to je za databázi? Pro většinu db se dá vygooglit dotaz na efektivní mazání duplicit.

Váš dotaz by dost možná urychlil složený index na (comment_time,comment_data, comment_history_id)
Název: Re:Mazanie duplicit v Icinga db - zlepšenie sub selectu
Přispěvatel: e3k 12. 05. 2021, 09:46:17
je to icinga db. index na tie polia by bol giganticky jedna sa o timestamp a roznorode commenty.
Název: Re:Mazanie duplicit v Icinga db - zlepšenie sub selectu
Přispěvatel: Petr Zíka 13. 05. 2021, 12:20:13
Pokud je důležitější cíl, než cesta, pak uložení do txt souboru a pak sort -u a vložit zpět. Ani 10x větší soubor nedělá problémy (test se 4.5GB):
time cat xxxx.log |sort -S 100G |wc -l
50243744
real    0m44,233s
time cat xxxx.log |sort -S 100G -u |wc -l
33461294
real    1m6,306s
Název: Re:Mazanie duplicit v Icinga db - zlepšenie sub selectu
Přispěvatel: stanislav.elbl 13. 05. 2021, 13:46:32
A co vytvořit index jen na comment_time?
Název: Re:Mazanie duplicit v Icinga db - zlepšenie sub selectu
Přispěvatel: Věroš K. 14. 05. 2021, 15:03:13
Pokud je to už Icinga2, tak použijte přímo funkci v Icinze - https://icinga.com/docs/icinga-2/latest/doc/14-features/#db-ido-cleanup

Icinga umí pravidlně mazat záznamy, které jsou starší, než nějaká hodnota.


EDIT: Málo jsem si přečetl původní dotaz. Tohle jenom maže moc staré záznamy, původní tazatel chtěl mazat duplicitní záznamy. Nic jsem neřekl.