Parametrii standard din Mysql sunt proiectați pentru baze de date microscopice, care funcționează sub sarcini mici pe un hardware modest.
Procesul de configurare optimă Mysql constă din două părți - reglarea inițială și ajustarea parametrilor în timpul funcționării. Reglarea parametrilor în modul de funcționare depinde în mare măsură de specificul sistemului dvs. și de monitorizarea acestuia. Să ne uităm la parametrii și recomandările pentru stabilirea valorilor lor.
Trebuie să faceți setările în My.cnf.
innodb_buffer_pool_size
Dacă utilizați numai tabele InnoDB, setați această valoare la maximul posibil pentru sistemul dvs. Tamponul InnoDB stochează atât date, cât și indici. Prin urmare, valoarea acestei chei ar trebui să fie setată la 70% ... 80% din toată memoria disponibilă.
# Având în vedere că pe serverul nostru 32GB de RAM
innodb_log_file_size
Această opțiune afectează viteza de înregistrare. Se stabilește mărimea jurnalului de operații (deoarece operațiile sunt scrise mai întâi în jurnal și apoi aplicate datelor de pe disc). Cu cât este mai mare acest jurnal, cu atât înregistrările vor funcționa mai repede (deoarece se potrivesc mai mult în fișierul jurnal). Există întotdeauna două fișiere, iar dimensiunea lor este aceeași. Valoarea parametrului este dimensiunea unui fișier:
# Deci, două fișiere vor da dimensiunea jurnalului la 2x512M = 1G
innodb_log_buffer_size
Valorile implicite în 1M ar trebui să fie suficiente pentru majoritatea cazurilor
innodb_file_per_table
Dacă activați această opțiune, Innodb va salva datele din toate tabelele în fișiere separate (în loc de un fișier în mod implicit). Creșterea productivității nu va fi, cu toate acestea, există o serie de avantaje:
- Când ștergeți tabelele, discul va fi eliberat. În mod implicit, fișierul de date partajat se poate extinde, dar nu poate scădea.
- Folosind formatul de compresie al tabelelor va fi necesară această opțiune.
# De la versiunea 5.6, această opțiune este activată în mod implicit
innodb_flush_method
Acest parametru specifică logica pentru resetarea datelor pe disc. În sistemele moderne, atunci când utilizați link-uri RAID și rezervă, veți alege între O_DSYNC și O_DIRECT:
# Fiți conștienți de utilizarea obligatorie a nodurilor redundante (de exemplu, replici)
innodb_flush_log_at_trx_commit
Schimbarea acestui parametru poate mări lățimea de bandă de scriere a datelor în baza de date de sute de ori. Aceasta determină dacă Mysql va reseta fiecare operațiune pe disc (în fișierul jurnal).
Aici ar trebui să urmați această logică:
- innodb_flush_log_at_trx_commit = 1 pentru cazurile în care integritatea datelor este prioritatea numărul unu.
- innodb_flush_log_at_trx_commit = 2 pentru cazurile în care o mică pierdere de date nu este critică (de exemplu, utilizați duplicarea și veți putea recupera o mică pierdere). În acest caz, tranzacțiile vor fi resetate la jurnalul de pe disc doar o dată pe secundă.
Setați valoarea la discreția dvs. Cu toate acestea, în cele mai multe cazuri este de preferat a doua opțiune:
# Accelerarea semnificativă a scrisului în baza de date, dar acest lucru va necesita mecanisme de duplicare a datelor
query_cache_size
Valoarea acestui parametru determină cât de multă memorie ar trebui folosită pentru cache-ul de interogare. Abordarea cea mai corectă nu este să se bazeze pe acest mecanism. În practică, funcționează foarte ineficient. De exemplu, întreaga memorie cache pentru o anumită tabelă este resetată ori de câte ori există cel puțin o modificare a tabelului. Acest lucru poate duce la faptul că activarea memorării în cache va încetini chiar baza de date:
# Cu toate acestea, asigurați-vă că utilizați indexuri pentru a asigura performanța interogării de mare viteză
max_connections
Nu modificați valoarea acestui parametru la început. Cu toate acestea, dacă primiți erori "Prea multe conexiuni". această opțiune ar trebui ridicată. Acesta definește numărul maxim de conexiuni simultane la baza de date: