15 korisnih savjeta za podešavanje i optimizaciju performansi MySQL/MariaDB


MySQL je moćan open source Sistem za upravljanje relacionim bazama podataka ili ukratko RDBMS. Izdata je davne 1995. godine (20 godina). Koristi Structured Query Language koji je vjerovatno najpopularniji izbor za upravljanje sadržajem unutar baze podataka. Najnovija verzija MySQL-a je 5.6.25 i objavljena je 29. maja 2015..

Zanimljiva činjenica o MySQL-u je činjenica da ime dolazi od kćeri Michaela Wideniusa (kreatora MySQL-a) My. Iakoiako postoji mnogo zanimljivih činjenica o MySQL-u, ovaj članak ima za cilj da vam pokaže neke korisne prakse koje će vam pomoći da upravljate svojim MySQL serverom.

U aprilu 2009 MySQL projekat je kupio Oracle. Kao rezultat toga, stvorena je viljuška MySQL zajednice pod nazivom MariaDB. Glavni razlog za stvaranje viljuške bio je da projekat ostane besplatan pod Općom javnom licencom.

Danas su MySQL i MariaDB jedni od najčešće (ako ne i najčešće) korištenih RDBMS-a koji se koriste za web aplikacije kao što su WordPress, Joomla, Magento i drugi.

Ovaj članak će vam pokazati neke osnovne, ali korisne savjete kako optimizirati fino podešavanje performansi MySQL/MariaDB. Imajte na umu da ovaj članak pretpostavlja da već imate instaliran MySQL ili MariaDB. Ako se još uvijek pitate kako ih instalirati na svoj sistem, možete slijediti naše opsežne vodiče ovdje:

  1. Instalacija LAMP-a na RHEL/CentOS 7
  2. Instaliranje LAMP-a na Fedora 22
  3. Postavljanje LAMP-a na Ubuntu 15.04
  4. Instalacija MariaDB-a na Debian 8
  5. Instalirajte MariaDB na Gentoo Linux
  6. Instalirajte MariaDB na Arch Linux

Važno: Prije nego što počnemo – nemojte slijepo prihvaćati ove prijedloge. Svaka MySQL postavka je jedinstvena i zahtijeva dodatno promišljanje prije bilo kakve promjene.

Stvari koje trebate znati:

  1. MySQL/MariaDB konfiguracijski fajl se nalazi u /etc/my.cnf. Svaki put kada modifikujete ovu datoteku moraćete ponovo da pokrenete MySQL servis kako bi nove promene mogle da stupe na snagu.
  2. Za pisanje ovog članka MySQL verzija 5.6 je korištena kao predložak.

1. Omogućite InnoDB datoteku po tablici

Prvo je važno objasniti da je InnoDB mehanizam za skladištenje podataka. MySQL i MariaDB koriste InnoDB kao podrazumevani mehanizam za skladištenje. U prošlosti je MySQL koristio za čuvanje tabela i indeksa baze podataka u sistemskom prostoru tablica. Ovaj pristup je bio namijenjen serverima čija je jedina namjena obrada baze podataka i njihov disk za pohranu se ne koristi u druge svrhe.

InnoDB pruža fleksibilniji pristup i svaka informacija baze podataka se čuva u .ibd datoteci podataka. Svaki .ibd fajl predstavlja sopstveni tabelarni prostor. Na taj način operacije baze podataka kao što je “TRUNCATE ” mogu biti dovršene brže i možete povratiti neiskorišteni prostor kada ispuštate ili skraćujete tablicu baze podataka.

Još jedna prednost ove konfiguracije je činjenica da neke od tablica baze podataka možete držati u zasebnom uređaju za pohranu. Ovo može značajno poboljšati I/O opterećenje na vašim diskovima.

innodb_file_per_table je podrazumevano omogućen u MySQL 5.6 i novijim verzijama. To možete vidjeti u datoteci /etc/my.cnf. Direktiva izgleda ovako:

innodb_file_per_table=1

2. Pohranite podatke MySQL baze podataka na zasebnoj particiji

Napomena: Ova postavka radi samo sa MySQL, ali ne i sa MariaDB.

Ponekad OS čitanje/pisanje može usporiti performanse vašeg MySQL servera, posebno ako se nalazi na istom tvrdom disku. Umjesto toga, preporučio bih korištenje zasebnog tvrdog diska (po mogućnosti SSD) za MySQL uslugu.

Da biste ovo završili, moraćete da priključite novi disk na vaš računar/server. Za potrebe ovog članka, pretpostavljam da će disk biti pod /dev/sdb.

Sljedeći korak je priprema novog pogona:

fdisk /dev/sdb

Sada pritisnite “n ” da kreirate novu particiju. Zatim pritisnite “p ” da novu particiju učinite primarnom. Nakon toga, postavite broj particije od 1-4. Nakon toga ćete odabrati veličinu particije. Pritisnite enter ovdje. U sljedećem koraku morat ćete konfigurirati veličinu particije.

Ako želite koristiti cijeli disk pritisnite enter još jednom. Inače možete ručno postaviti veličinu nove particije. Kada budete spremni, pritisnite “w” da upišete promjene. Sada ćemo morati da kreiramo sistem datoteka za našu novu particiju. Ovo se lako može uraditi sa:

mkfs.ext4 /dev/sdb1

Sada ćemo montirati našu novu particiju u folder. Imenovao sam svoj folder “ssd” i kreirao ga u korijenskom direktoriju:

mkdir /ssd/

Spremni smo za montiranje nove particije koju smo upravo napravili u novi folder:

mount /dev/sdb1  /ssd/

Možete izvršiti montiranje pri pokretanju dodavanjem sljedećeg reda u datoteku /etc/fstab.

/dev/sdb1 /ssd ext3 defaults 0 0

Sada ste spremni da premestite MySQL na novi disk. Prvo zaustavite MySQL servis sa:

service mysqld stop

Preporučio bih vam da također zaustavite Apache/nginx kako biste spriječili bilo kakve pokušaje pisanja u baze podataka:

service httpd stop
service nginx stop

Sada kopirajte cijeli MySQL direktorij u novi pogon:

cp /var/lib/mysql /ssd/ -Rp

Ovo može potrajati u zavisnosti od lokacije vaših MySQL baza podataka. Kada se ovaj proces završi, preimenujte MySQL direktorij:

mv /var/lib/mysql /var/lib/mysql-backup

Zatim ćemo kreirati simboličku vezu.

ln -s /ssd/mysql /var/lib/mysql

Sada ste spremni da pokrenete svoj MySQL i web servis:

service mysqld start
service httpd start
service nginx start

U ovom trenutku vašim MySQL bazama podataka će se pristupiti sa novog diska.