Fórum Root.cz
Hlavní témata => Server => Téma založeno: 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.
select max(commenthistory_id)
from icinga_commenthistory
group by comment_time, comment_data
Nejaky napad jak toto urychlit?
-
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.
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)
-
je to icinga db. index na tie polia by bol giganticky jedna sa o timestamp a roznorode commenty.
-
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
-
A co vytvořit index jen na comment_time?
-
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.