Promazání tabulky, nechat každý 6 záznam – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Promazání tabulky, nechat každý 6 záznam – MySQL – Fórum – Programujte.comPromazání tabulky, nechat každý 6 záznam – MySQL – Fórum – Programujte.com

 

Spuštěný nový filmový web Filmožrouti.cz — vše o Avengers, Pacific Rim, Thor, Star Wars…
Pavelv0
Stálý člen
27. 6. 2018   #1
-
0
-

Zdravím, mám v DB sloupec datetime ve kterém jsou záznamy po 10 vteřinách. Lze nějak promazat starší záznamy tak, aby tam zbyl v dané minutě třeba jen první záznam. Něco jako vymazat vše starší, kromě GROUP BY SEC(time). Jako jedniné řešení mi zatím napadá udělat select nad daty co tam mají zbýt a zkopírovat je do dočasné tabulky. Poté originál smazat a z dočasné tabulky je přesunout zpět. Připadá mi to ale moc složité.

Mazání bych poté chtěl nastavit jako trigger při vložení nového záznamu.

Nahlásit jako SPAM
IP: 95.47.186.–
Kit+14
Guru
27. 6. 2018   #2
-
0
-

#1 Pavelv
Když uděláš SELECT nad daty, které v té tabulce mají zůstat, získáš pohled. Když tento pohled odečteš MINUS od původní tabulky, dostaneš záznamy, které chceš smazat. Je to jen jeden SQL příkaz. Dávej si pozor na to, abys nevyhledával id v tom pohledu, protože nebývá indexován. Proto je lepší místo IN použít JOIN, se kterým má optimalizátor víc prostoru, aby to udělal správně.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:8dc:7...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
28. 6. 2018   #3
-
0
-

Udělal bych si novou tabulku s nějakým názvem a do ní nakopíroval data, která mají zůstat. Až bude v nové tabulce vše bych starou přejmenoval nebo smazal a novou přejmenoval na správné jméno. Možná by to bylo vhodné provést jako transakci. Pro vybírání dat s daným časovým rozestupem (jedna hodnota za 120 sec apod.) použij modulo. Jak na to najdeš http://programujte.com/forum/vlakno/27050-vybrat-hodnoty-se-zadanym-casovym-rozestupem/

hu

Nahlásit jako SPAM
IP: 195.178.67.–
28. 6. 2018   #4
-
0
-

Alternativní postup: starou tabulku přejmenovat a vytvořit novou. Do nové zkopírovat jen co je potřeba, pak starou odstranit.

Ještě lze vybírat a mazat řádky, podmínka se změní na mod(to_seconds(cas) - to_seconds('2014-04-11 11:21'), 120) != 0

Nezasahovat do staré tabulky má jednu výhodu: data někde zůstávají nedotknutá, je menší riziko jejich ztráty nebo poškození.

Když o tom tak přemýšlím, tak by to bylo vhodné jako transakci provést vždy - při chybě můžeš provedené vzít zpět (rollback).

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Kit+14
Guru
28. 6. 2018   #5
-
0
-

#1 Pavelv
Pokud by to povaha dat dovolila, tak bych místo MySQL použil RRDtool. Je určen k monitorování provozu a je tedy pro zmíněné účely mnohem lépe vybaven, s minimální zátěží systému. Nevadí mu ani chybějící záznamy a umí interpolovat, pokud se zeptám na údaje v konkrétním čase mezi uloženými hodnotami.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:745d:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý