Vyhledávání na webu

15 užitečných tipů pro ladění a optimalizaci výkonu MySQL/MariaDB


MySQL je výkonný open source systém správy relačních databází nebo zkráceně RDBMS. Vyšlo již v roce 1995 (20 let staré). Používá Structured Query Language, což je pravděpodobně nejoblíbenější volba pro správu obsahu v databázi. Nejnovější verze MySQL je 5.6.25 a byla vydána 29. května 2015.

Zajímavým faktem o MySQL je skutečnost, že jméno pochází od dcery Michaela Widenius (tvůrce MySQL) My. I kdyžje zde spousta zajímavých faktů o MySQL, tento článek vám má ukázat některé užitečné postupy, které vám pomohou spravovat váš server MySQL.

V dubnu 2009 koupil projekt MySQL společnost Oracle. V důsledku toho byl vytvořen fork komunity MySQL s názvem MariaDB. Hlavním důvodem pro vytvoření forku bylo zachování projektu zdarma pod General Public License.

Dnes jsou MySQL a MariaDB jedny z nejpoužívanějších (ne-li nejčastěji) používaných RDBMS pro webové aplikace jako WordPress, Joomla, Magento a další.

Tento článek vám ukáže několik základních, ale užitečných tipů, jak optimalizovat doladění výkonu MySQL/MariaDB. Mějte prosím na paměti, že tento článek předpokládá, že již máte nainstalované MySQL nebo MariaDB. Pokud stále přemýšlíte, jak je nainstalovat do vašeho systému, můžete se řídit našimi rozsáhlými průvodci zde:

  1. Instalace LAMP na RHEL/CentOS 7
  2. Instalace LAMP na Fedora 22
  3. Nastavení LAMP na Ubuntu 15.04
  4. Instalace MariaDB na Debian 8
  5. Nainstalujte MariaDB na Gentoo Linux
  6. Nainstalujte MariaDB na Arch Linux

Důležité: Než začneme – nepřijímejte tyto návrhy slepě. Každé nastavení MySQL je jedinečné a před provedením jakýchkoli změn vyžaduje další úvahu.

Věci, které potřebujete vědět:

  1. Konfigurační soubor MySQL/MariaDB se nachází v /etc/my.cnf. Pokaždé, když tento soubor upravíte, budete muset restartovat službu MySQL, aby se nové změny projevily.
  2. Pro napsání tohoto článku byla jako šablona použita verze MySQL 5.6.

1. Povolte InnoDB soubor-na-tabulku

Nejprve je důležité vysvětlit, že InnoDB je úložiště. MySQL a MariaDB používají InnoDB jako výchozí úložiště. V minulosti MySQL používalo k uchovávání databázových tabulek a indexů v systémovém tabulkovém prostoru. Tento přístup byl určen pro servery, jejichž jediným účelem je zpracování databází a jejich úložný disk se nepoužívá pro žádné jiné účely.

InnoDB poskytuje flexibilnější přístup a každá databázová informace je uchovávána v datovém souboru .ibd. Každý soubor .ibd představuje svůj vlastní tabulkový prostor. Databázové operace, jako je „ZKRÁTIT“ tak mohou být dokončeny rychleji a můžete také získat zpět nevyužitý prostor při zrušení nebo zkrácení databázové tabulky.

Další výhodou této konfigurace je skutečnost, že některé databázové tabulky můžete uchovávat na samostatném úložném zařízení. To může výrazně zlepšit I/O zatížení vašich disků.

innodb_file_per_table je v MySQL 5.6 a vyšší standardně povoleno. Můžete to vidět v souboru /etc/my.cnf. Směrnice vypadá takto:

innodb_file_per_table=1

2. Uložte data databáze MySQL na samostatný oddíl

Poznámka: Toto nastavení funguje pouze s MySQL, ale ne s MariaDB.

Někdy může čtení/zápis OS zpomalit výkon vašeho serveru MySQL, zejména pokud je umístěn na stejném pevném disku. Místo toho bych doporučil použít samostatný pevný disk (nejlépe SSD) pro službu MySQL.

K dokončení budete muset připojit nový disk k počítači/serveru. Pro účely tohoto článku budu předpokládat, že disk bude pod /dev/sdb.

Dalším krokem je příprava nového disku:

fdisk /dev/sdb

Nyní stiskněte „n “ pro vytvoření nového oddílu. Poté stiskněte „p “, aby byl nový oddíl primární. Poté nastavte číslo oddílu od 1-4. Poté vyberete velikost oddílu. Zde stiskněte enter. V dalším kroku budete muset nakonfigurovat velikost oddílu.

Pokud chcete použít celý disk, stiskněte ještě jednou enter. Jinak můžete ručně nastavit velikost nového oddílu. Až budete připraveni, stiskněte „w “ a zapište změny. Nyní budeme muset vytvořit souborový systém pro náš nový oddíl. To lze snadno provést pomocí:

mkfs.ext4 /dev/sdb1

Nyní připojíme náš nový oddíl do složky. Pojmenoval jsem svou složku „ssd“ a vytvořil jsem ji v kořenovém adresáři:

mkdir /ssd/

Jsme připraveni připojit nový oddíl, který jsme právě vytvořili, do nové složky:

mount /dev/sdb1  /ssd/

Připojení můžete provést při spuštění přidáním následujícího řádku do souboru /etc/fstab.

/dev/sdb1 /ssd ext3 defaults 0 0

Nyní jste připraveni přesunout MySQL na nový disk. Nejprve zastavte službu MySQL pomocí:

service mysqld stop

Doporučil bych vám také zastavit Apache/nginx, abyste zabránili pokusům o zápis do databází:

service httpd stop
service nginx stop

Nyní zkopírujte celý adresář MySQL na nový disk:

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

To může chvíli trvat v závislosti na místě vašich databází MySQL. Po dokončení tohoto procesu přejmenujte adresář MySQL:

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

Dále vytvoříme symbolický odkaz.

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

Nyní jste připraveni spustit MySQL a webovou službu:

service mysqld start
service httpd start
service nginx start

V tomto okamžiku budou vaše databáze MySQL přístupné z nového disku.