Pagreitinkite savo svetainę naudodami "MySQL Query Caching"

Pagreitinkite savo svetainę naudodami "MySQL Query Caching"
Pagreitinkite savo svetainę naudodami "MySQL Query Caching"

Video: Pagreitinkite savo svetainę naudodami "MySQL Query Caching"

Video: Pagreitinkite savo svetainę naudodami
Video: How to Recover/Restore previous session Tabs in Firefox after crashing or closing - YouTube 2024, Balandis
Anonim

Vienas iš geriausių būdų, kaip pagreitinti jūsų žiniatinklio taikymą, yra įgalinti duomenų bazės užklausų spartinimą, kuri saugo dažniausiai naudojamas SQL užklausas atmintyje, kad beveik greita prieiga galėtų būti kitame puslapyje, pateikiančiame tą patį prašymą.

Priežastis, kodėl šis metodas yra toks galingas, yra tai, kad nereikia keisti savo žiniatinklio programos, jūs tiesiog turite paaukoti šiek tiek atminties. Tai nesiruošia išspręsti visų jūsų problemų, tačiau tai tikrai negali pakenkti.

Pastaba: jei jūsų programa dažnai atnaujina lenteles, tada užklausos talpykla bus nuolat išvaloma ir jūs negausite daug naudos iš to. Tai idealiai tinka programai, kuri daugiausiai skaitoma prieš duomenų bazę, pvz., "WordPress" tinklaraštį. Tai taip pat neveiks, jei naudojate bendrinamą prieglobą.

Įgalinti spartinimą naudojant serverį

Pirmas dalykas, kurį norėsite padaryti, yra įsitikinti, kad jūsų "MySQL" diegimas iš tiesų yra prieinamas užklausų talpyklos palaikymas. Dauguma paskirstymo funkcijų, bet vis tiek turėtumėte patikrinti.

Jūs norėsite paleisti šią komandą iš savo MySQL konsolės, kuri parodys jums, ar galima gauti užklausą.

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

Negalima to klaidinti, nes tai reiškia, kad užklausos saugojimas iš tikrųjų įjungtas, nes dauguma prieglobos paslaugų teikėjų nesiekia įjungti pagal numatytuosius nustatymus. Keista, mano Ubuntu Feisty diegimas jau buvo įjungtas …

Tada turėsime patikrinti, ar įjungta užklausų saugykla. Turėsime patikrinti daugiau nei vieną kintamąjį, todėl mes taip pat galime padaryti tai iš karto, patikrindami kintamojo užklausą%

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 | +------------------------------+---------+

Štai svarbūs sąrašo elementai ir tai, ką jie reiškia:

  • query_cache_size - Tai yra talpyklos dydis baitais. Nustačius šią reikšmę 0 bus veiksmingai išjungta talpykla.
  • query_cache_type - Ši reikšmė turi būti įjungta arba 1, kad būtų galima įjungti užklausą pagal numatytuosius nustatymus.
  • query_cache_limit - Tai maksimalaus dydžio užklausa (baitais), kuri bus talpykloje.

Jei reikšmė query_cache_size yra 0 arba norite ją pakeisti, turėsite paleisti šią komandą, turint omenyje, kad vertė yra baitais. Pavyzdžiui, jei norėtumėte priskirti 8MB talpyklą, vertę turėtume naudoti 1024 * 1024 * 8 = 8388608.

SET GLOBAL query_cache_size = 8388608;

Panašiai ir kitos parinktys gali būti nustatytos naudojant tą patį sintaksę:

SET GLOBAL query_cache_limit = 1048576;

SET GLOBAL

query_cache_type

= 1;

Dabar kaip mes galime pasakyti, ar tai iš tikrųjų veikia? Galite naudoti komandą SHOW STATUS, norėdami ištraukti visus kintamuosius, kurie prasideda "Qc", kad pamatytumėte, kas vyksta po gaubtu.

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)

Jūs pastebėsite, kad turiu daug laisvos atminties. Jei jūsų serveryje yra daug mažo dydžio slyvų, galbūt turėsite apsvarstyti galimybę padidinti šią vertę, bet aš nepadariau per daug atminties užklausos spartinimo žiniatinklio serverio … jums reikia palikti atmintis apache, php, ruby arba ką jūs naudojate.

Įgalinti konfigūracijos failą

Jei norite, kad šie pakeitimai išliktų perkraunant arba iš naujo paleidžiant mysql serverį, juos reikės pridėti prie savo /etc/mysql/my.cnf konfigūracijos failo, skirto MySQL. Atminkite, kad jūsų įrenginys gali būti kitoje vietoje.

Atidarykite failą naudodami teksto redagavimo priemonę sudo ar šakniniame režime, tada pridėkite šias reikšmes, jei jos dar nėra faile. Jei jie egzistuoja, tiesiog juos pakartokite.

query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576

Užklausos spartinimas gali žymiai pagerinti jūsų žiniatinklio programos greitį, ypač jei jūsų programa dažniausiai skaito. Stebėkite būseną naudodamiesi anksčiau nurodytais metodais ir peržiūrėkite, kaip ji veikia laikui bėgant.

Rekomenduojamas: