Homepage » hogyan kell » Felgyorsíthatja webhelyét a MySQL lekérdezés gyorsítótárával

    Felgyorsíthatja webhelyét a MySQL lekérdezés gyorsítótárával

    A webalkalmazás felgyorsításának egyik legjobb módja az, hogy engedélyezze a lekérdezés gyorsítótárazását az adatbázisban, amely a leggyakrabban használt SQL lekérdezéseket tárolja a memóriában, hogy gyakorlatilag azonnali hozzáférést kapjon a következő oldalhoz, amely ugyanazt a kérést teszi.

    Ennek az oka, hogy ez a módszer annyira erős, hogy nem kell változtatnia a webes alkalmazást, csak egy kis memóriát kell feláldoznia. Ez nem fogja megoldani az összes problémádat, de biztosan nem bánt.

    Megjegyzés: ha az alkalmazás gyakran frissíti a táblázatokat, akkor a lekérdezési gyorsítótár folyamatosan törlődik, és nem fog sokat vagy hasznot hozni. Ez ideális olyan alkalmazáshoz, amely többnyire az adatbázishoz képest olvas, mint például a WordPress blog. Ez nem fog működni, ha megosztott tárhelyen fut.

    A gyorsítótár engedélyezése a kiszolgáló futásával

    Az első dolog, amit meg akar tenni, győződjön meg róla, hogy a MySQL telepítése valójában lekérdezési gyorsítótár-támogatással rendelkezik. A legtöbb terjesztés megtörténik, de mégis ellenőrizni kell.

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

    mysql> olyan változók megjelenítése, mint a 'have_query_cache'; + ------------------ + ------- + | Változó_név | Érték | + ------------------ + ------- + | have_query_cache | IGEN | +------------------+-------+ 

    Ne tévessze meg azt, hogy a lekérdezés gyorsítótára valójában engedélyezve van, mert a legtöbb tárhelyszolgáltató nem fogja ezt alapértelmezés szerint engedélyezni. Furcsa módon az Ubuntu Feisty telepítésem már engedélyezte ...

    Ezután meg kell vizsgálnunk, hogy a lekérdezés gyorsítótárazása engedélyezve van-e. Egynél több változót kell ellenőriznünk, így mindezt egyszerre elvégezhetjük a változó lekérdezés% -ánál.

    mysql> olyan változók megjelenítése, mint a 'query%'; + ------------------------------ + --------- + | Változó_név | Érték | + ------------------------------ + --------- + | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | BE | | query_cache_wlock_invalidate | KI | | query_prealloc_size | 8192 | +------------------------------+---------+ 

    Íme a lista fontos elemei és mit jelentenek:

    • query_cache_size - Ez a gyorsítótár mérete bájtokban. Ha ezt az értéket 0-ra állítja, akkor hatékonyan letiltja a gyorsítótárazást.
    • query_cache_type - Ennek az értéknek BE vagy 1 kell lennie a lekérdezési gyorsítótárban, hogy alapértelmezés szerint engedélyezze.
    • query_cache_limit - Ez a gyorsítótárban lévő maximális lekérdezés (bájtban).

    Ha a query_cache_size érték 0-ra van állítva, vagy csak azt szeretné megváltoztatni, akkor a következő parancsot kell futtatnia, szem előtt tartva, hogy az érték bájtban van. Például, ha 8MB-t szeretne kiosztani a gyorsítótárhoz, akkor 1024 * 1024 * 8 = 8388608 értéket használnánk.

    SET GLOBAL query_cache_size = 8388608;

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

    SET GLOBAL query_cache_limit = 1048576;
    SET GLOBAL query_cache_type = 1;

    Most hogyan tudjuk megmondani, hogy valójában működik? A SHOW STATUS paranccsal kiválaszthatja az összes változót, amely a „Qc” -vel kezdődik, hogy megnézze, mi történik a motorháztető alatt.

    mysql> STATUS LÁNC "Qc%"; + ------------------------- + -------- + | Változó_név | Érték | + ------------------------- + -------- + | 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 sor készlet (0.00 sec) 

    Észreveszed a statisztikákban, hogy rengeteg szabad memóriám maradt. Ha a kiszolgálón sok lowmem aszalt szilva található, érdemes lehet ezt az értéket növelni, de nem töltnék túl sok memóriát a webkiszolgáló lekérdezési gyorsítótárában… az apache, php, ruby, vagy amit használ.

    Engedélyezve a Config File-ban

    Ha azt szeretné, hogy ezek a változások túlélhessenek a mysql kiszolgáló újraindításával vagy újraindításával, akkor hozzá kell adni őket a /etc/mysql/my.cnf konfigurációs fájlhoz a MySQL számára. Ne feledje, hogy a telepítés egy másik helyén található.

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

    query_cache_size = 268435456 query_cache_type = 1 lekérdezés_cache_limit = 1048576

    A lekérdezési gyorsítótár jelentősen javíthatja webes alkalmazásának sebességét, különösen akkor, ha az alkalmazás többnyire olvasható. Figyelje meg az állapotot a fenti módszerekkel és nézze meg, hogyan működik az idő.