Portál AbcLinuxu, 10. května 2025 17:14

Dotaz: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov

3.8.2011 19:54 monty
mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
Přečteno: 273×
Odpovědět | Admin
ahojte, potreboval by som poradiť s týmto. V crone sa mi spúšťajú súbory (denne niekoľko tisíckrát rôzne súbory sa spustia). Po spustení každého súboru sa automaticky do db zapíše čas spustenia (prvý riadok na začiatku súboru) a po jeho ukončení sa zapíše čas ukončenia (posledný riadok na konci súboru php). Mám to tak preto, aby som vedel, keď niektorý súbor nedobehne do konca (napr.kvôli chybe, utne ho server, vyprší doba behu skriptu, atď). Týmto sa mi ale zbytočne plní databáza a po roku tam bude niekoľko miliónov riadkov, veľké auto increment idečka, skrátka bude veľká. Z môjho pohľadu ma nezaujímajú riadky v databáze, ktoré majú zapísaný začiatok i koniec behu súboru, lebo tým pádom je jasné, že súbor sa ukončil korektne. Moja myšlienka (laická) je taká, že by sa mala od týchto riadkov čas od času databáza odľahčiť, teda mohli by byť zmazané a zostať len tie riadky, ktoré napr. nemajú zapísanú hodnotu ukončenia (tých je úplné minimum). Ako by som to mal spraviť, aby databáza zbytočne nebola zaťažovaná riadkami, ktoré ma nezaujímajú? Čo radíte? Asi by bolo dobré aj nejako poupratovať auto increment hodnotu, aby zbytočne po vymazaní riadkov nepočítala a nezapisovala miliónové čísla, keď tie pred nimi sú voľné. Ďakujem za vaše rady už teraz.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (monty (tazatel))
3.8.2011 20:22 Kit
Rozbalit Rozbalit vše Re: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
Odpovědět | | Sbalit | Link | Blokovat | Admin
Autoincrement neřeš. Miliardová čísla ID nejsou na závadu.

Začátek skriptu můžeš udělat jako INSERT SET zacatek=now() a konec UPDATE SET konec=now().

Při ukončení skriptu můžeš záznam smazat. Zůstanou jen neukončené.

Pokud už máš tabulku naplněnu, pošli sem strukturu. Dá se to udělat celkem snadno přes spojení tabulky na sebe samu.

Zvaž, jestli je na tuto úlohu nutná databáze a zda je nutné použít zrovna MySQL.
3.8.2011 22:00 l0gik | skóre: 22
Rozbalit Rozbalit vše Re: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
Databáze je ideální, protože kdyby to psal někam do souboru atd., tak musí řešit konkurenci. Tak max ještě nějaká nosql databáze možná, ale proč nad tím mudrovat, když v mysql to je rychle a bez problémů.
Řešení 1× (monty (tazatel))
3.8.2011 20:46 l0gik | skóre: 22
Rozbalit Rozbalit vše Re: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
Odpovědět | | Sbalit | Link | Blokovat | Admin
3.8.2011 21:11 monty
Rozbalit Rozbalit vše Re: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
ďakujem Vám za obom za usmernenie. Teší ma, že to pre db nebude problém. zase som o niečo chytrejší :-)
4.8.2011 09:57 kuka
Rozbalit Rozbalit vše Re: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
Pri tomto scenari tam muzes mit stovky milionu radku a bude to z hlediska vykonu pri zapisu asi celkem fuk (analyticke dotazy - pokud tam jsou potreba - jsou jina kapitola). Ale samozrejme treba zalohy ti usnadni, kdyz budes stara nepotrebna data cas od casu mazat.
5.8.2011 12:30 VM
Rozbalit Rozbalit vše Re: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
Odpovědět | | Sbalit | Link | Blokovat | Admin
O limitech tabulky v MySQL: http://dev.mysql.com/doc/refman/4.1/en/full-table.html
5.8.2011 16:41 Kit
Rozbalit Rozbalit vše Re: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
Na druhou stranu je zbytečné udržovat data o kterých vím, že je nebudu potřebovat. Na zmíněnou úlohu by stačilo nějaké jednoduché KVS, relační databáze bych nechal pro jiné účely.
5.8.2011 19:06 monty
Rozbalit Rozbalit vše Re: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
čo znamená prosím KVS?
5.8.2011 19:48 Kit
Rozbalit Rozbalit vše Re: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
KVS je myšleno Key-Value Store. Databáze, do které se data ukládají pouze ve formě klíč->hodnota. Jinou strukturu nemá, záleží na fantazii a schopnostech programátora. Obvykle bývá velmi rychlá, řádově rychlejší než běžné relační databáze. V PHP jsou běžně dostupné např DB4 nebo GDBM a dost se na ně zapomíná.

Jiným označením KVS je asociativní pole.
5.8.2011 19:55 monty
Rozbalit Rozbalit vše Re: mysql zamedzenie znižovaniu výkonu odstraňovaním nepotrebných riadkov
vďaka za vysvetlenie

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.