Na deljenem gostovanju si računi gostovanja delijo skupen strežnik podatkovnih baz (MySQL ali MariaDB). Če račun izvaja zelo veliko ali zelo zahtevnih poizvedb, lahko upočasni podatkovne baze vseh spletnih strani na strežniku. To preprečuje komponenta CloudLinuxa z imenom MySQL Governor.
Kako deluje?
MySQL Governor v realnem času spremlja, koliko procesorskega časa in diskovnih operacij porabijo poizvedbe posameznih računov. Dokler račun ostaja v dovoljenem okviru, se ne zgodi nič.
Če račun preseže okvir, Governor njegove poizvedbe naprej izvaja v lastnem okviru virov računa (LVE). V istem okviru teče tudi koda PHP spletne strani, zato si procesi podatkovne baze in PHP računa skupaj delijo omejitve virov njegovega paketa. Ko se obremenitev zmanjša, omejitev po kratkem času sama preneha.
Odvisno od nastavitve strežnika lahko Governor zelo dolgo (na primer več deset sekund) tekoče poizvedbe SELECT tudi prekine. Drugih vrst poizvedb (pisanja, spreminjanja) ne prekinja.
Kaj takrat opaziš?
- Strani, ki uporabljajo podatkovno bazo (na primer strani WordPress ali seznami izdelkov spletne trgovine), se nalagajo počasneje.
- Zaradi počasnejših poizvedb zahteve PHP tečejo dlje, zato se število hkratnih povezav pogosteje zapolni, kar lahko povzroči tudi napako 508.
- Na grafih strani Poraba virov v cPanelu je poraba podatkovne baze prikazana z modro črto, na zavihku Snapshot pa se prikažejo tudi poizvedbe v podatkovni bazi, ki so tekle, ko je bila omejitev dosežena. Podrobnosti: Kaj pomenijo števci napak (faults) na strani Poraba virov?
Omejitev ni kazen in ne vpliva na celovitost podatkov: le zagotavlja, da obremenitev podatkovne baze enega računa ne gre na račun drugih spletnih strani.
Kako zmanjšaš obremenitev podatkovne baze?
- Predpomnjenje: predpomnilnik strani večino obiskov postreže brez poizvedb v podatkovni bazi. Nasveti: Kako pospešim svojo stran WordPress?
- Vzdrževanje podatkovne baze: brisanje nepotrebnih revizij, poteklih začasnih podatkov (transient) in neželenih komentarjev ter optimizacija tabel. Podroben vodnik: Optimizacija podatkovne baze za WordPress.
- Indeksi: v lastni aplikaciji dodaj indeks na stolpce, po katerih pogosto filtriraš in razvrščaš. Zaradi manjkajočega indeksa poizvedba prebere celotno tabelo.
- Zahtevni vtičniki: vtičniki za statistiko, dnevnike in iskanje pogosto ob vsakem nalaganju strani pišejo v podatkovno bazo. Preveri, katere res potrebuješ.
- Načrtovana opravila: velike uvoze, izvoze in poročila zaganjaj v času brez prometa, glej: Kako se cron in SSH štejeta v omejitve virov?
Če ne veš, katere poizvedbe povzročajo obremenitev, piši naši podpori in pomagali ti bomo ugotoviti.