15 Nëtzlech MySQL/MariaDB Leeschtung Tuning an Optimisatioun Tipps


MySQL ass e mächtege Open Source Relational Database Management System oder kuerz RDBMS. Et gouf am Joer 1995 (20 Joer al) verëffentlecht. Et benotzt Structured Query Language déi wahrscheinlech déi populärste Wiel ass fir Inhalt an enger Datebank ze managen. Déi lescht MySQL Versioun ass 5.6.25 a gouf den 29. Mee 2015 verëffentlecht.

Eng interessant Tatsaach iwwer MySQL ass d'Tatsaach datt den Numm vum Michael Widenius senger Duechter MySQL MySQL kënnt. Och wann et vill interessant Fakten iwwer MySQL sinn, ass dësen Artikel geduecht fir Iech e puer nëtzlech Praktiken ze weisen fir Iech ze hëllefen Äre MySQL Server ze managen.

Am Abrëll 2009 gouf de MySQL Projet vun Oracle kaaft. Als Resultat gouf eng MySQL Gemeinschaftsgabel mam Numm MariaDB erstallt. Den Haaptgrond fir d'Gabel ze kreéieren war de Projet gratis ënner der General Public License ze halen.

Haut sinn MySQL a MariaDB ee vun de meescht (wann net déi) dacks benotzte RDBMS fir Webapplikatiounen wéi WordPress, Joomla, Magento an anerer.

Dësen Artikel weist Iech e puer grondleeënd, awer nëtzlech Tipps wéi Dir d'Performance vu MySQL/MariaDB optiméiert. Denkt w.e.g. datt dësen Artikel ugeholl datt Dir schonn MySQL oder MariaDB installéiert hutt. Wann Dir Iech nach ëmmer frot wéi Dir se op Ärem System installéiere kënnt, kënnt Dir eis extensiv Guiden hei verfollegen:

  1. LAMP op RHEL/CentOS 7 installéieren
  2. LAMP op Fedora 22 installéieren
  3. LAMP op Ubuntu 15.04 opsetzen
  4. Installéiere vun MariaDB op Debian 8
  5. Installéiert MariaDB op Gentoo Linux
  6. Installéiert MariaDB op Arch Linux

Wichteg: Ier mer ufänken - akzeptéiert dës Virschléi net blann. All MySQL Setup ass eenzegaarteg a erfuerdert zousätzlech Gedanken, ier Dir Ännerungen maacht.

Saachen déi Dir wësse musst:

  1. MySQL/MariaDB Konfiguratiounsdatei läit an /etc/my.cnf. All Kéier wann Dir dës Datei ännert, musst Dir de MySQL Service nei starten fir datt déi nei Ännerungen a Kraaft triede kënnen.
  2. Fir dësen Artikel ze schreiwen ass MySQL Versioun 5.6 als Schabloun benotzt ginn.

1. Aktivéiert InnoDB Datei-pro-Table

Als éischt ass et wichteg ze erklären datt InnoDB e Späichermotor ass. MySQL a MariaDB benotzen InnoDB als Standard Späichermotor. An der Vergaangenheet huet MySQL benotzt fir Datebanktabellen an Indexen an engem System Tablespace ze halen. Dës Approche war geduecht fir Serveren déi eenzeg Zweck ass d'Datebankveraarbechtung an hir Späicherdisk ass net fir aner Zwecker benotzt.

D'InnoDB bitt méi flexibel Approche an all Datebankinformatioun gëtt an enger .ibd Datendatei gehal. All .ibd-Datei stellt en eegene tablespace duer. Sou kënnen d'Datebankoperatioune wéi TRUNCATE méi séier ofgeschloss ginn an Dir kënnt och onbenotzt Plaz zréckhuelen wann Dir eng Datebanktabell erofléisst oder ofgeschnidden.

En anere Virdeel vun dëser Konfiguratioun ass d'Tatsaach datt Dir e puer vun den Datebanktabellen an engem separaten Späicherapparat behalen kann. Dëst kann d'I/O-Laascht op Ären Disken staark verbesseren.

Den innodb_file_per_table ass als Standard am MySQL 5.6 a méi héich aktivéiert. Dir kënnt dat an /etc/my.cnf Datei gesinn. D'Direktiv gesäit esou aus:

innodb_file_per_table=1

2. Store MySQL Datebank Donnéeën op getrennt Partition

Notiz: Dëse Setup funktionnéiert nëmme mat MySQL, awer net mat MariaDB.

Heiansdo OS Liesen/Schreift kënnen d'Leeschtung vun Ärem MySQL Server verlangsamen, besonnesch wann se op der selwechter Festplack läit. Amplaz géif ech recommandéieren eng separat Festplack (virun allem SSD) fir de MySQL Service ze benotzen.

Fir dëst ze kompletéieren, musst Dir den neien Drive op Ärem Computer/Server befestigen. Fir den Zweck vun dësem Artikel wäert ech unhuelen datt de Drive ënner /dev/sdb ass.

De nächste Schrëtt ass den neien Drive virzebereeden:

# fdisk /dev/sdb

Dréckt elo \n fir eng nei Partition ze kreéieren. Als nächst dréckt \p fir déi nei Partition primär ze maachen. Duerno setze d'Partitionsnummer vun 1-4. Duerno wielt Dir d'Partitionsgréisst. Press enter hei. Op de nächste Schrëtt musst Dir d'Gréisst vun der Partition konfiguréieren.

Wann Dir de ganzen Disk benotze wëllt, dréckt op Enter nach eng Kéier. Soss kënnt Dir d'Gréisst vun der neier Partition manuell setzen. Wann Dir fäerdeg sidd, dréckt \w fir d'Ännerungen ze schreiwen. Elo musse mir e Dateiesystem fir eis nei Partition erstellen. Dëst kann einfach gemaach ginn mat:

# mkfs.ext4 /dev/sdb1

Elo wäerte mir eis nei Partition an engem Dossier montéieren. Ech hunn mäin Dossier ssd genannt an am Root-Verzeichnis erstallt:

# mkdir /ssd/

Mir si prett fir déi nei Partition ze montéieren déi mir just am neien Dossier gemaach hunn:

# mount /dev/sdb1  /ssd/

Dir kënnt de Mount beim Startup maachen andeems Dir déi folgend Zeil an /etc/fstab Datei bäidréit.

/dev/sdb1 /ssd ext3 defaults 0 0

Elo sidd Dir prett MySQL op déi nei Disk ze réckelen. Éischt stoppen de MySQL Service mat:

# service mysqld stop

Ech géif Iech recommandéieren Apache/nginx och ze stoppen fir all Versuche fir an den Datenbanken ze schreiwen:

# service httpd stop
# service nginx stop

Elo kopéiert de ganze MySQL Verzeichnis op den neien Drive:

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

Dëst kann eng Zäit daueren ofhängeg vum Site vun Äre MySQL Datenbanken. Wann dëse Prozess fäerdeg ass, ëmbenennen de MySQL Verzeichnis:

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

Als nächst wäerte mir e Symlink erstellen.

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

Elo sidd Dir prett fir Äre MySQL a Webservice unzefänken:

# service mysqld start
# service httpd start
# service nginx start

Zu dësem Zäitpunkt ginn Är MySQL-Datenbanken vum neien Drive zougänglech.