Delphi - Adatbázis feldolgozása a számítógép terhelése nélkül

forráskód letöltése
A cím kissé csalóka: ehhez a feldolgozáshoz is szükség van természetesen processzor időre, de ebből a felhasználó nem igazán vesz észre semmit, mivel csak akkor dolgozik a gép az adatbázison, amikor egyetlen alkalmazásnak sem kell a processzor, tehát a felhasználó éppen semmit sem csinál.

Mivel egy processzor sokszor az ideje 80%-ában csak azt várja, hogy végre legyen mit dolgoznia, így jól kihasználhatjuk ezt az időt arra, hogy például hosszadalmas, akár több órás adatbázis műveleteket, vagy bármi egyebet végeztessünk a géppel, oly módon, hogy ezzel a felhasználót nem zavarjuk. A cím kissé csalóka: ehhez a feldolgozáshoz is szükség van természetesen processzor időre, de ebből a felhasználó nem igazán vesz észre semmit, mivel csak akkor dolgozik a gép az adatbázison, amikor egyetlen alkalmazásnak sem kell a processzor, tehát a felhasználó éppen semmit sem csinál.

Mivel egy processzor sokszor az ideje 80%-ában csak azt várja, hogy végre legyen mit dolgoznia, így jól kihasználhatjuk ezt az időt arra, hogy például hosszadalmas, akár több órás adatbázis műveleteket, vagy bármi egyebet végeztessünk a géppel, oly módon, hogy ezzel a felhasználót nem zavarjuk.


Legyen mondjuk a feladat a következő: töltsünk fel egy adatbázist 50 000 rekorddal, úgy hogy az ID mezőjébe írjuk az aktuális rekord számot, míg a VALUE mezőbe írjuk az aktuális időpontot kiegészítve egy négy karakteres véletlenszerű számmal.

Egy gyorsabb gépen ez csupán 2-3 perc, de mi van, ha nem gyorsabb gépen vagyunk, vagy ha nem 50 000 hanem százszorosa a kívánt rekord mennyiség. A felhasználó biztos elunja az életét, mire végzünk.

Ezért készítsünk egy olyan rutint mely külön szálon fut a programtól, és elvégzi a fenti adatbázis feltöltést.

Mivel egy-egy szálnak szabályozható a prioritása a többihez képest és van egy tpIdle szint is, amely csak akkor engedi futni az adott szálat, amikor a processzor "ráér", így elérhetjük azt, hogy ez a feldolgozás ne akadályozza a felhasználót a munkájában, közben használhat akár más programot, akár a saját alkalmazásunkat is.

A feldolgozás valószínűleg így tovább tart, mintha kisajátítanánk az egész processzort, viszont ha időben nem kritikus ez a művelet, akkor ez egy tökéletes megoldás a problémára.