Gyorsítsd fel weboldaladat a MySQL lekérdezéssel

Gyorsítsd fel weboldaladat a MySQL lekérdezéssel
Gyorsítsd fel weboldaladat a MySQL lekérdezéssel

Videó: Gyorsítsd fel weboldaladat a MySQL lekérdezéssel

Videó: Gyorsítsd fel weboldaladat a MySQL lekérdezéssel
Videó: A NAGY CHILI CHALLENGE 2.rész - Hajnóczy Soma - YouTube 2024, Április
Anonim

Az egyik legjobb módja annak, hogy felgyorsítsa a webes alkalmazást, lehetővé teszi a lekérdezés gyorsítótárba helyezését az adatbázisban, amely a gyakran használt SQL lekérdezéseket tárolja a memóriában az azonnali eléréshez a következő oldalon, amely ugyanazt a kérést teszi.

Ennek a módszernek az oka, hogy nem kell változtatni a webes alkalmazásban, csak fel kell áldoznia egy kis memóriát. Ez nem fogja megoldani az összes problémádat, de biztosan nem fáj.

Megjegyzés: ha az alkalmazás gyakran frissíti a táblázatokat, akkor a lekérdezési gyorsítótár folyamatosan megtisztul, és nem fog sok vagy semmilyen hasznot hozni ebből. Ez ideális olyan alkalmazásokhoz, amelyek többnyire az adatbázis ellen olvasnak, például egy WordPress blogot. Ez nem fog működni, ha megosztott tárhelyen fut.

Engedélyezze a gyorsítótárazást a kiszolgáló futásakor

Az első dolog, amit meg akarsz csinálni, győződjön meg róla, hogy a MySQL telepítése valóban rendelkezésre áll a lekérdezési gyorsítótárban. A legtöbb elosztás nem, de ellenőriznie kell.

Ezt a parancsot futtatni kell a MySQL konzolból, amely megmondja, hogy rendelkezésre áll-e a lekérdezési gyorsítótár.

mysql> show variables like 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+

Ezt ne tévesszük úgy, hogy a lekérdezési gyorsítótár valóban engedélyezve van, mert a legtöbb tárhelyszolgáltató alapértelmezés szerint ezt nem fogja engedélyezni. Furcsa módon az Ubuntu Feisty telepítése már lehetővé tette …

Ezután ellenőrizni kell, hogy a lekérdezési gyorsítótár engedélyezve van-e. Egynél több változót kell ellenőrizni, ezért mindezt egyszerre is megtehetjük, ha ellenőrizzük a%

mysql> show variables like 'query%'; +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+

Itt vannak a listán szereplő fontos elemek és azok jelentései:

  • query_cache_size - Ez a cache méretét bájtban. Ha ezt az értéket 0 értékre állítja, hatékonyan letiltja a gyorsítótárazást.
  • query_cache_type - Ennek az értéknek BE vagy 1 kell lennie ahhoz, hogy a lekérdezési gyorsítótár alapértelmezés szerint engedélyezve legyen.
  • query_cache_limit - Ez a legmagasabb méretű lekérdezés (bájtban), amely gyorsítótárba kerül.

Ha a query_cache_size érték értéke 0, vagy csak módosítani szeretné, akkor a következő parancsot kell futtatnia, figyelembe véve, hogy az érték bájtban van. Például, ha 8 MB-t akarunk elosztani a gyorsítótárba, az értékként 1024 * 1024 * 8 = 8388608 értéket használnánk.

SET GLOBAL query_cache_size = 8388608;

Hasonlóképpen, a többi opció ugyanazzal a szintaxissal állítható be:

SET GLOBAL query_cache_limit = 1048576;

SET GLOBAL

query_cache_type

= 1;

Most hogyan tudjuk megmondani, tényleg dolgozik-e? A SHOW STATUS parancs használatával kihúzhat minden olyan változót, amely "Qc" -el kezdődik, hogy megnézze, mi történik a motorháztető alatt.

mysql> SHOW STATUS LIKE 'Qc%'; +-------------------------+--------+ | Variable_name | Value | +-------------------------+--------+ | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | +-------------------------+--------+ 8 rows in set (0.00 sec)

A statisztikákban rájövünk, hogy még sok szabad memória maradt. Ha a kiszolgálón sok alsónemű szilva jelenik meg, érdemes fontolóra venni ezt az érték növelését, de nem szabad túl sok memóriát eltölteni a lekérdezõ gyorsítótárban egy webszerver számára … el kell hagynia az apache, a php, a ruby vagy a memória számára rendelkezésre álló memóriát bármit használsz.

Engedélyezés a konfigurációs fájlban

Ha azt szeretné, hogy a változások túléljék a mysql-kiszolgáló újbóli indítását vagy újraindítását, akkor hozzá kell adnia a MySQL-hez tartozó /etc/mysql/my.cnf konfigurációs fájljához. Ne feledje, hogy a telepítés más helyszínen lehet.

Nyissa meg a fájlt egy szövegszerkesztővel a sudo vagy gyökér módban, majd adja hozzá ezeket az értékeket, ha még nem léteznek a fájlban. Ha léteznek, csak figyelmen kívül hagyja őket.

query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576

A lekérdezés gyorsítótárazása jelentősen javíthatja webes alkalmazásának sebességét, különösen akkor, ha az alkalmazás többnyire olvassa. Figyelje az állapotot a fenti módszerek segítségével, és nézze meg, hogyan működik az idő múlásával.

Ajánlott: