15 Przydatne wskazówki dotyczące optymalizacji wydajności i optymalizacji MySQL / MariaDB


MySQL to potężny relacyjny system zarządzania bazami danych o otwartym kodzie źródłowym lub krótko RDBMS . Został wydany w 1995 r. (20 lat). Używa strukturalnego języka zapytań , który jest prawdopodobnie najpopularniejszym wyborem do zarządzania treścią w bazie danych. Najnowsza wersja MySQL to 5.6.25 i została wydana 29 maja 2015 .

Interesującym faktem dotyczącym MySQL jest fakt, że nazwa pochodzi od córki Michaela Wideniusa (twórcy MySQL) My. Nawet choć istnieje wiele interesujących faktów na temat MySQL, ten artykuł ma na celu pokazanie kilku przydatnych praktyk, które pomogą Ci zarządzać serwerem MySQL.

W kwietniu 2009 projekt MySQL został zakupiony przez Oracle. W rezultacie utworzono społeczny widżet MySQL o nazwie MariaDB . Głównym powodem utworzenia widelca było pozostawienie projektu za darmo w ramach Powszechnej Licencji Publicznej.

Dzisiaj MySQL i MariaDB są jednym z najczęściej używanych (jeśli nie najbardziej) RDBMS używanych w aplikacjach internetowych, takich jak WordPress , Joomla , Magento i inne.

Ten artykuł pokaże kilka podstawowych, ale przydatnych wskazówek, jak zoptymalizować dostrojenie wydajności MySQL/MariaDB. Pamiętaj, że w tym artykule założono, że masz już zainstalowany MySQL lub MariaDB. Jeśli nadal zastanawiasz się, jak je zainstalować w swoim systemie, możesz śledzić nasze obszerne przewodniki tutaj:

  1. Installing LAMP on RHEL/CentOS 7
  2. Installing LAMP on Fedora 22
  3. Setting Up LAMP on Ubuntu 15.04
  4. Installing MariaDB on Debian 8
  5. Install MariaDB on Gentoo Linux
  6. Install MariaDB on Arch Linux

czerwony

Rzeczy, które musisz wiedzieć:

  1. MySQL/MariaDB configuration file is located in /etc/my.cnf. Every time you modify this file you will need to restart the MySQL service so the new changes can take effect.
  2. For writing this article MySQL version 5.6 has been used as template.

1. Włącz plik InnoDB na tabelę

Przede wszystkim należy wyjaśnić, że InnoDB to mechanizm przechowywania. MySQL i MariaDB używają InnoDB jako domyślnego mechanizmu przechowywania. W przeszłości MySQL używał do przechowywania tabel bazy danych i indeksów w obszarze tabel systemowych. Podejście to było przeznaczone dla serwerów, których jedynym celem jest przetwarzanie bazy danych, a ich dysk pamięciowy nie jest wykorzystywany do żadnych innych celów.

InnoDB zapewnia bardziej elastyczne podejście, a każda informacja o bazie danych jest przechowywana w pliku danych .ibd . Każdy plik .ibd reprezentuje własny obszar tabel. W ten sposób operacje bazy danych, takie jak „ TRUNCATE ”, mogą być wykonywane szybciej, a także możesz odzyskać nieużywane miejsce podczas upuszczania lub obcinania tabeli bazy danych.

Kolejną zaletą tej konfiguracji jest fakt, że niektóre tabele bazy danych można przechowywać w oddzielnym urządzeniu pamięci masowej. Może to znacznie poprawić obciążenie we/wy na dyskach.

Tabela_plików_nazw_węzła jest domyślnie włączona w MySQL 5.6 i nowszych. Możesz to zobaczyć w pliku /etc/my.cnf . Dyrektywa wygląda tak:

innodb_file_per_table=1

2. Przechowuj dane bazy danych MySQL na osobnej partycji

czerwony

Czasami odczyt/zapis OS może spowolnić działanie serwera MySQL, zwłaszcza jeśli znajduje się na tym samym dysku twardym. Zamiast tego zalecałbym używanie oddzielnego dysku twardego (najlepiej SSD) dla usługi MySQL.

Aby zakończyć, musisz dołączyć nowy dysk do komputera/serwera. Na potrzeby tego artykułu założę, że dysk będzie znajdował się pod /dev/sdb .

Następnym krokiem jest przygotowanie nowego dysku:

# fdisk /dev/sdb

Teraz naciśnij „ n ”, aby utworzyć nową partycję. Następnie naciśnij „ p ”, aby utworzyć nową partycję podstawową. Następnie ustaw numer partycji na 1-4 . Następnie wybierz rozmiar partycji. Naciśnij enter tutaj. W następnym kroku musisz skonfigurować rozmiar partycji.

Jeśli chcesz użyć całego dysku, naciśnij ponownie Enter. W przeciwnym razie możesz ręcznie ustawić rozmiar nowej partycji. Po zakończeniu naciśnij „ w ”, aby zapisać zmiany. Teraz musimy utworzyć system plików dla naszej nowej partycji. Można to łatwo zrobić za pomocą:

# mkfs.ext4 /dev/sdb1

Teraz zamontujemy naszą nową partycję w folderze. Nazwę mój folder „ ssd ” i utworzyłem w katalogu głównym:

# mkdir /ssd/

Jesteśmy gotowi do zamontowania nowej partycji, którą właśnie stworzyliśmy w nowym folderze:

# mount /dev/sdb1  /ssd/

Mount można wykonać podczas uruchamiania, dodając następujący wiersz w pliku /etc/fstab .

/dev/sdb1 /ssd ext3 defaults 0 0

Teraz jesteś gotowy przenieść MySQL na nowy dysk. Najpierw zatrzymaj usługę MySQL za pomocą:

# service mysqld stop

Polecam również zatrzymanie Apache/nginx, aby zapobiec próbom zapisu w bazach danych:

# service httpd stop
# service nginx stop

Teraz skopiuj cały katalog MySQL na nowy dysk:

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

Może to trochę potrwać w zależności od witryny baz danych MySQL. Po zakończeniu tego procesu zmień nazwę katalogu MySQL:

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

Następnie utworzymy dowiązanie symboliczne.

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

Teraz jesteś gotowy do uruchomienia MySQL i usługi internetowej:

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

W tym momencie dostęp do baz danych MySQL będzie możliwy z nowego dysku.