Kažu: što više – to bolje. Ali, da li je uvek tako? 🤔
Velika baza podataka može da stvori i velike problema. Za početak, može da dovede do sporog učitavanja sajta. Samim tim, dosta posetilaca će da napusti vaš sajt i on neće biti dobro indeksiran u Google pretrazi. Sa druge strane, velika baza crpi i dosta resursa sa hosting naloga, kao što je prostor, procesorsko vreme itd.
Napomena: Važno je napomenuti da se optimizacijom upita definiše na koji će se način performanse baze podataka smanjiti. Ako upiti nisu dovoljno optimizovani, primetiće se smanjenje performansi baze podataka čak i kada je baza podataka mala (MB). Na primer, u našem iskustvu sa sličnim situacijama naišli smo na bazu podataka veličine 100 MB i brzinu učitavanja veb stranica u roku od 10 sekundi samo zbog neoptimizovanih upita. Ako su upiti dobro optimizovani, veličina baze podataka možda neće ozbiljno uticati na performanse sve dok ne postigne značajniju veličinu (GB, TB).
Rast baze podataka nastaje kao logičan sled događaja prilikom razvoja veb-sajta, unosa proizvoda, članaka, korisnika i ostalih podataka.
Na primer, kod WordPress-a baza se uvećava zbog instalacije i deinstalacije plaginova, privremenih sistemskih podataka, object cache, logova, spam komentara i članaka i sl. Ovo možete sprečiti uklanjanjem nepotrebnih podataka.
Kako mogu da smanjim veličinu baze podataka?
Možete da krenete sa analizom baze i pretragom nepotrebnih podataka u njenim tabelama. Prvo pregledajte one koje su najveće po veličini, zatim proverite šta generiše podatke u njima i da li se to može ukloniti.
Kako mogu da proverim veličinu baze podataka?
Ovu informaciju možete proveriti u meniju cPanel » MySQL baze podataka.
Možete proveriti i da li je baza potrošila resurse koji su joj namenjeni u okviru hosting paketa, tako što ćete otići u svoj korisnički profil i ući u Hosting nalozi > Detalji > Napredni sistemski parametri > Baze podataka.
Mi ćemo vam svakako poslati obaveštenje ako dostignete 100% ispunjenosti resursa hosting paketa.
Ako je baza prevelika, sledeći korak biće provera tabela i brisanje nepotrebnih podataka iz njih.
Kako da proverim veličinu tabele?
Kako biste saznali koje su to najveće tabele po veličini, potrebno je da uđete na svoj cPanel nalog i phpMyAdmin, otvorite bazu i sortirate tabele po veličini. Prva tabela na spiksu će biti najveća.
Ako koristite CMS, naziv tabele će ukazivati na to koji plagin ili funkcionalnost se koristi.
Naravno, uvek se može desiti da postoji više od jedne velike tabele. Dobro razmislite koje podatke ćete ukloniti iz njih imajući u vidu sistem veb-sajta i funkcionalnost tabele.
Kako da izbrišem tabele ili podatke koje sadrže?
Ovo se takođe radi pomoću phpMyAdmin. Ako želite da izbrišete tabelu, koristite opciju Drop. Ako želite da izbrišete određene podatke iz tabele možete kreirati specijalan upit samo u tu svrhu. Opcija Empty briše ceo sadržaj tabele.
Postoji i drugi način za brisanje podataka iz tabele: da koristite dodatni plagin ili modul u administratorskom panelu sajta.
Napomena: Obavezno napravite rezervnu kopiju baze pre ovih promena.
Neke od najčešćih velikih tabela u CMS-ovima
Kada koristite neki od sistema za upravljanje sadržajem (CMS) za svoj sajt treba da znate da postoje određene tabele koje su često glavnih razlog zašto je baza velika.
WORDPRESS
Vremenom se u bazi WordPress-a gomilaju podaci pa čak i cele tabele iako nisu više potrebni za rad sajta. Možete da uklonite tabele od deinstaliranih plaginova jer ovo neće uticati na rad sajta.
Ovo su neke od WordPress tabela koje se mogu proveriti i izbrisati:
- wp_options
Podaci i podešavanja za instalirane plaginove se čuvaju u ovoj tabeli. Ako uklonite plagin možete izbrisati njegove podatke iz ove tabele. U ovoj tabeli treba da potražite nakupljene privremene podatke kao što su object cache – transients. Dosta podataka se gomila i od strane WooCommerce plagina (wc_session) i možete ih ukloniti putem System status >> Tools opcije za ručno uklanjanje ovih podataka ili samo onih koji su istekli.
Napomena: Možete aktivirati Memcached ili Redis na sajtu kako biste sprečili da se object cache upisuje u options tabelu u WordPress bazi. Možete lako aktivirati ove tehnologije pomoću opcije Ubrzaj u WordPress Manager by SuperHosting. Ako želite da ručno aktivirate Memcached/Redis potrebno je da aktivirate Object Cache opciju u plaginu W3 Total Cache.
- wp_posts
Proverite da li imate nagomilane spam članke u ovoj tabeli. Proverite i broj revizija koje su sačuvane za jedan članak. Ako ih ima više od 3, možete da im smanjite broj ili da izbrišete sve sačuvane revizije.
- wp_comments
Proverite da li postoje spam komentari u ovoj tabeli i uklonite ih ako ih ima. Možete aktivirati i Akismet plagin tako da se spam komentari automatski brišu.
Ove nepotrebne podatke možete ukloniti ručno iz baze podataka ili putem plagina za optimizaciju baze podataka kao što je WP-Optimize, WP-DBManager i Transients Manager.
DRUPAL
System error logs su smešteni u Drupal bazu podataka.
Naziv tabele je “watchdog”. U slučaju da vam nisu potrebni ovi logovi možete izbrisati sadržaj tabele. Naravno, ovo je samo privremeno rešenje pošto je potrebno proveriti koje su to greške i ispraviti ih.
PRESTASHOP
U Prestashop-u možete čuvati statističke podatke o posetama korisnika. Proverite sledeće tabele i izbrišite podatke koji više nisu potrebni: ps_connections, ps_connections_source i ps_connections_page.
MAGENTO
Kao i u prethodnim sistemima, Magento čuva u svojoj bazi logove i statistike. Proverite tabele i izbrišite sve što je nepotrebno, kao npr. sledeće tabele: log_visitor_info, log_url_info, log_url and log_visitor.
Retko će se desiti da se velika količina podataka čuva u sledećoj tabeli: core_url_rewrite. U ovom slučaju će za optimizaciju tabele biti potrebno veće tehničko znanje, kao što je navedeno u ovom primeru.
Optimizacija baze podataka
Alati koje ćemo opisati u ovom tekstu se koriste za optimizaciju baze i oni neće menjati izvorni kod sajta ili upite u bazi. Niti će im biti potrebna posebna podrška.
Za optimizaciju baze možete koristiti alat phpMyAdmin u cPanelu ili mysqlcheck komandu putem SSH pristupa.
Važno: pre nego što izvršite bilo kakvu operaciju na bazi podataka uradite bekap.
phpMyAdmin
Korišćenjem ovog alata možete optimizovati i popraviti bazu podataka.
Opcija za optimizovanje tabela (Optimize table) koristi SQL komandu OPTIMIZE TABLE. Ova opcija smanjuje prostor na disku koji koristi baza i povećava efikasnost ulazno-izlaznih operacija (I/O).
Najbolje je izvršiti optimizaciju nakon brisanja velike količine podataka iz tabela.
Uđite u phpMyAdmin, kliknite na ime baze i izaberite sve tabele klikom na kvadratić sa leve strane (Check all). Zatim izaberite opciju Optimize table iz padajućeg menija.
Ukoliko je u pitanju veća baza podataka biće potrebno vreme da se završi ovaj proces.
SSH: mysqlcheck
Za optimizaciju baze putem SSH pristupa možete koristiti mysqlcheck zajedno sa “-o” (–optimize) parametrom.
mysqlcheck -o cpuser_mydb -h localhost -u cpuser_mydbuser -pPassword
cpuser_mydb – zamenite sa nazivom baze
cpuser_mydbuser – zamenite sa korisnikom baze
Password – korisnička lozinka za bazu, treba pisati bez razmaka nakom – p parametra
Cron zadaci – automatizovana optmizacija
SSH komanda mysqlcheck može da se koristi u Cron zadacima za periodičnu automatizovanu optimizaciju baze podataka. Preporučujemo da optimizujete svoju bazu barem jednom mesečno ili češće, u zavisnosti od toga koliko često se unose promene u bazu.
Kada budete kreirali cron zadatak u cPanelu potrebno je da unesete u polje za komandu koja se izvršava:
/usr/bin/mysqlcheck -o -v -u cpuser_mydbuser -pPassword -h localhost cpuser_mydb
cpuser_mydb – zamenite sa nazivom baze;
cpuser_mydbuser – zamenite sa korisnikom baze;
Password – korisnička lozinka za bazu, treba pisati bez razmaka nakon – p parametra.
Ukoliko želite da vidite rezultat izvršavanja komande možete uneti imejl adresu u meniju Cron zadaci u cPanelu ili dodajte na kraju komande “> dboptimize.txt”
/usr/bin/mysqlcheck -o -v -u cpuser_mydbuser -pPassword -h localhost cpuser_mydb > dboptimize.txt
Koje su prednosti smanjenja veličine baze podataka?
Sa manjom bazom sistem će imati garantovane maksimalne performanse. Kada je baza brza, njeni upiti su optimizovani, indeksi tačni i sajt će se onda brzo učitavati.
Kako je Google počeo da posmatra brzinu sajta u svom rangiranju u pretrazi, brzo učitavanje sajta je postao imperativ.
U nekim slučajevima optimizovanje baze nije moguće jer je sajt isuviše veliki i svi podaci u bazi su važni. U ovim slučajevima je potrebno obezbediti više resursa i prostora kako bi sajt mogao da i dalje se razvija. Rešenje može biti prelazak na veći shared hosting paket ili VPS.