Mysql
 sql >> база данни >  >> RDS >> Mysql

Съвети за осигуряване на производителност на базата данни на MySQL – първа част

Берендът на базата данни засяга приложението, което след това може да повлияе на производителността на организацията. Когато това се случи, отговорните са склонни да искат бързо решение. Има много различни пътища за подобряване на производителността в MySQL. Като много популярен избор за много организации, доста често е да се намери инсталация на MySQL с конфигурацията по подразбиране. Това обаче може да не е подходящо за вашето работно натоварване и нужди от настройка.

В този блог ще ви помогнем да разберете по-добре натоварването на вашата база данни и нещата, които могат да й причинят вреда. Познанията за това как да се използват ограничени ресурси са от съществено значение за всеки, който управлява базата данни, особено ако стартирате производствената си система на MySQL DB.

За да гарантираме, че базата данни работи според очакванията, ще започнем с безплатните инструменти за наблюдение на MySQL. След това ще разгледаме свързаните параметри на MySQL, които можете да настроите, за да подобрите екземпляра на базата данни. Ще разгледаме и индексирането като фактор в управлението на производителността на базата данни.

За да можем да постигнем оптимално използване на хардуерните ресурси, ще разгледаме оптимизацията на ядрото и други важни настройки на операционната система. И накрая, ще разгледаме модерните настройки, базирани на MySQL репликация и как може да бъде разгледана по отношение на изоставането в производителността.

Идентифициране на проблеми с производителността на MySQL

Този анализ ви помага да разберете по-добре здравето и производителността на вашата база данни. Инструментите, изброени по-долу, могат да помогнат за улавяне и разбиране на всяка транзакция, като ви позволяват да останете на върха на нейната производителност и потребление на ресурси.

PMM (Наблюдение и управление на Percona)

Инструментът за наблюдение и управление на Percona е колекция от инструменти с отворен код, посветена на MySQL, MongoDB и MariaDB бази данни (на място или в облака). PPM е безплатен за използване и е базиран на добре познатите времеви серии на Grafana и Prometheus DB. Той предоставя задълбочен анализ, базиран на време за MySQL. Той предлага предварително конфигурирани табла за управление, които помагат да разберете натовареността на вашата база данни.

PMM използва модел клиент/сървър. Ще трябва да изтеглите и инсталирате както клиента, така и сървъра. За сървъра можете да използвате Docker Container. Това е толкова лесно, колкото да изтеглите докер изображението на PMM сървъра, да създадете контейнер и да стартирате PMM.

Изтеглете изображението на PMM сървър

docker pull percona/pmm-server:2

2: Pulling from percona/pmm-server

ab5ef0e58194: Downloading  2.141MB/75.78MB

cbbdeab9a179: Downloading  2.668MB/400.5MB

Създаване на PMM контейнер

docker create \

   -v /srv \

   --name pmm-data \

   percona/pmm-server:2 /bin/true

Изпълнете контейнера

docker run -d \

   -p 80:80 \

   -p 443:443 \

   --volumes-from pmm-data \

   --name pmm-server \

   --restart always \

   percona/pmm-server:2

Можете също да проверите как изглежда без инсталация. Демо на PMM е достъпно тук.

Друг инструмент, който е част от набора инструменти за PMM, е Анализ на заявки (QAN). Инструментът QAN остава на върха на времето за изпълнение на заявките. Можете дори да получите подробности за SQL заявки. Той също така дава исторически преглед на различните параметри, които са критични за оптималната производителност на MySQL сървър на база данни. Това често помага да разберете дали някакви промени в кода могат да навредят на производителността ви. Например нов код беше въведен без ваше знание. Лесно използване би било да се показват текущи SQL заявки и да се подчертават проблеми, за да ви помогне да подобрите производителността на вашата база данни.

PMM предлага моментна и историческа видимост на производителността на базата данни на MySQL. Таблата могат да бъдат персонализирани, за да отговарят на вашите специфични изисквания. Можете дори да разширите конкретен панел, за да намерите информацията, която искате за минало събитие.

Безплатно наблюдение на база данни с ClusterControl

ClusterControl осигурява наблюдение в реално време на цялата инфраструктура на базата данни. Той поддържа различни системи за бази данни, започвайки с MySQL, MariaDB, PerconaDB, MySQL NDB Cluster, Galera Cluster (както Percona, така и MariaDB), MongoDB, PostgreSQL и TimescaleDB. Модулите за наблюдение и внедряване са безплатни за използване.

ClusterControl се състои от няколко модула. В безплатното ClusterControl Community Edition можем да използваме:

Съветниците за производителност предлагат конкретни съвети как да се справят с проблеми с базата данни и сървъра, като като производителност, сигурност, управление на регистрационни файлове, конфигурация и планиране на капацитета. Оперативните отчети могат да се използват за осигуряване на съответствие в стотици случаи. Мониторингът обаче не е управление. ClusterControl има функции като управление на архивиране, автоматично възстановяване/прекъсване при отказ, внедряване/мащабиране, непрекъснати надстройки, сигурност/криптиране, управление на балансиране на натоварването и т.н.

Мониторинг и съветници

ClusterControl Community Edition предлага безплатен мониторинг на база данни, който осигурява унифициран изглед на всичките ви внедрявания в центрове за данни и ви позволява да се разработите в отделни възли. Подобно на PMM можем да намерим табла за управление, базирани на данни в реално време. Трябва да знаете какво се случва сега, с показатели с висока разделителна способност за по-добра точност, предварително конфигурирани табла за управление и широка гама от услуги за уведомяване на трети страни за известяване.

Локалните и облачните системи могат да се наблюдават и управляват от една точка . Интелигентните проверки на състоянието са внедрени за разпределени топологии, например откриване на мрежово разделяне чрез използване на изгледа на балансира на натоварването на възлите на базата данни.

ClusterControl Анализ на работното натоварване в един от компонентите за наблюдение, който лесно може да ви помогне да проследявайте дейностите на вашата база данни. Той осигурява яснота в транзакциите/заявките от приложения. Никога не се очакват изключения от производителността, но се случват и лесно се пропускат в морето от данни. Outlier discovery ще получи всякакви заявки, които изведнъж започват да се изпълняват много по-бавно от обикновено. Той проследява пълзящата средна и стандартното отклонение за времената за изпълнение на заявка и открива/предупреждава, когато разликата между стойността надвишава средната стойност с две стандартни отклонения.

Както можем да видим от снимката по-долу, успяхме да хванем някои заявки, които между един ден са склонни да променят времето на изпълнение в определено време.

За да инсталирате ClusterControl, щракнете тук и изтеглете инсталационния скрипт. Инсталационният скрипт ще се погрижи за необходимите инсталационни стъпки.

Трябва също да разгледате демонстрацията на ClusterControl, за да я видите в действие.

Можете също да получите изображение на Docker с ClusterControl.

$ docker pull severalnines/clustercontrol

За повече информация по този въпрос следвайте тази статия.

Индексиране на MySQL база данни

Без индекс изпълнението на същата заявка води до сканиране на всеки ред за необходимите данни. Създаването на индекс върху поле в таблица създава допълнителна структура от данни, която е стойността на полето и указател към записа, към който се отнася. С други думи, индексирането създава пряк път с много по-бързо време за заявка в обширни таблици. Без индекс MySQL трябва да започне с първия ред и след това да прочете цялата таблица, за да намери съответните редове.

Общо казано, индексирането работи най-добре за онези колони, които са предмет на клаузите WHERE във вашите често изпълнявани заявки.

Таблиците могат да имат множество индекси. Управлението на индекси неизбежно ще изисква възможността да изброите съществуващите индекси в таблица. Синтаксисът за преглед на индекс е по-долу.

За да проверите индексите на MySQL таблица, изпълнете:

SHOW INDEX FROM table_name;

Тъй като индексите се използват само за ускоряване на търсенето на съвпадащо поле в записите, е логично, че полетата за индексиране, използвани само за изход, биха били просто загуба на дисково пространство. Друг страничен ефект е, че индексите могат да разширят операциите за вмъкване или изтриване и по този начин, когато не са необходими, трябва да се избягват.

Размяна на MySQL база данни

На сървъри, където MySQL е единствената работеща услуга, е добра практика да зададете vm.swapiness =1. Настройката по подразбиране е зададена на 60, което не е подходящо за система от база данни.

vi /etc/sysctl.conf
vm.swappiness = 1

Прозрачни огромни страници

Ако използвате своя MySQL на RedHat, уверете се, че Transparent Huge Pages е деактивиран.

Това може да се провери с команда:

cat /proc/sys/vm/nr_hugepages
0

(0 означава, че прозрачните огромни страници са деактивирани.)

MySQL I/O Scheduler 

В повечето дистрибуции Noop или крайните I/O планировчици трябва да бъдат активирани по подразбиране. За да го проверите, стартирайте

cat /sys/block/sdb/queue/scheduler 

Опции на MySQL файловата система

Препоръчително е да използвате журналирани файлови системи като xfs, ext4 или btrfs. MySQL работи добре с всички тях и разликите по-вероятно ще дойдат с поддържания максимален размер на файла.

  • XFS (максимален размер на файловата система 8EB, максимален размер на файла 8EB)
  • XT4 (максимален размер на файловата система 8EB, максимален размер на файла 16TB)
  • BTRFS (максимален размер на файловата система 16EB, максимален размер на файла 16EB)

Настройките на файловата система по подразбиране трябва да се прилагат добре.

NTP Deamon

Добра най-добра практика е да инсталирате NTP time server demon на сървъри на база данни. Използвайте една от следните системни команди.

#Red Hat
yum install ntp
#Debian
sudo apt-get install ntp

Заключение

Всичко това е за част първа. В следващата статия ще продължим с настройките на MySQL променливите на операционната система и полезните заявки за събиране на състоянието на производителността на базата данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРЕШКА:Зареждането на локални данни е деактивирано - това трябва да бъде активирано както от страна на клиента, така и от страна на сървъра

  2. Как да избера между 1-вия ден на текущия месец и текущия ден в MySQL?

  3. MySQL InnoDB не освобождава дисково пространство след изтриване на редове с данни от таблицата

  4. Въведение в SQL типове данни

  5. Създайте bash скрипт за наблюдение на заявки MySQL