PHP-erőforrásigény kérdés - melyik a lightabb megoldás?
Adott egy táblázat/tömb, amelyben vannak rekordok, hozzá tartozó értékekkel (kb. 4-5 paraméter). Ezeket kellene lekérdezni szinte minden oldalletöltéskor.
Kérdésem, hogy melyik a kevésbé erőforrásigényes megoldás: ha ezeket egy SQL-táblában tárolom, és ott végzek selecteket, vagy betöltöm egy tömbbe, akár session-változóként is minden egyes usernél?
A válaszokat előre is köszönöm.





Session halmazt semmiképp sem ajánlanék, mert azt duplikálja milyen látogatónál.
Ha kevés adatod van (ez relatív), akkor még szóba jöhet h statikus változókként a php fájlodban tárolod. Ez lesz a leggyorsabb, mert nem kell adatbázissal kommunikálni.
Ha ennél több adatot szépen és hatékonyan akarsz felületen keresztül karban tartani és módosítani, akkor csak adatbázis jöhet szóba.
Maga az adat nem statikus - ez tulajdonképpen egy foglalási rendszer, hogy adott terméket ne vigyék el egymás elől a vásárlók.
Akkor viszont adatbázis lesz - a kérdésem arra irányul tulajdonképpen, hogy inkább több párhuzamos lekérdezés éri meg jobban, vagy az intenzív memóriahasználat.










Az adatbázisrendszereket pont arra találták ki, hogy ne kelljen gányolni. Kisebb feladatnál is már jobb egy DBLite, mint egy saját megoldás.
Ha meg a terhelésmegosztás miatt akkor méginkább.





Tegyél fölé egy cache réteget. Redis/memcache.
Ha adott id-re adott adatokat kapsz, akkor simán egy id-t is tartalmazó cache kulcs alá pakold le az eredményt.





A session értékeket a PHP alapból fájlban tárolja. A fájlrendszer is tekinthető afféle adatbázisnak tulajdonképpen, de kevésbé hatékony, mint egy igazi adatbázis-kezelő, megfelelően optimalizált, tagolt, indexelt adattáblákkal. (Próbáld ki, melyik gyorsabb: lekérni 100 000 sort egy adatbázisból, vagy beolvasni 100 000 fájl tartalmát…) Pont ezért szokás nagyobb terhelés esetén a session-t adatbázisba pakolni, mert az gyorsabb. Onnantól meg végül is mindegy, hogy az egyik, vagy a másik táblából kéred le az adatokat.
Ahogy írták előttem ráadásul duplikálja az adatokat. Meg nem követi le az adatbázis változásait, ami adott esetben lehet problémaforrás is, hogy a sessionben tárolt adatokhoz képest időközben az adatbázis tartalma megváltozott.
Az adatbázis-kezelők nagyon jól optimalizáltak, általában érdemes rájuk bízni a feladatot.
Egy cache réteg nem jöhet rosszul, de az adatbázis-kezelőkben alapból van cache-elési mechanizmus.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!