Kuidas optimeerida MySQL jõudlust
Täielik juhend MySQL andmebaasi jõudluse optimeerimiseks: konfiguratsiooni häälestamine, päringute optimeerimine, indekseerimine ja jälgimine.

MySQL jõudluse optimeerimine on kriitiline rakendustele, mis töötlevad suuri andmehulki või kõrget liiklust. See juhend hõlmab olulisi tehnikaid MySQL jõudluse parandamiseks, alates konfiguratsiooni häälestamisest kuni päringute optimeerimiseni.
MySQL konfiguratsiooni optimeerimine
Redigeerige MySQL konfiguratsioonifaili, et optimeerida jõudlust oma serveri ressursside põhjal:
# MySQL konfiguratsiooni redigeerimine (Ubuntu/Debian)
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# MySQL konfiguratsiooni redigeerimine (CentOS/RHEL)
sudo nano /etc/my.cnf
# Nende seadete lisamine või muutmine:
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
max_connections = 200
query_cache_size = 64M
query_cache_type = 1
tmp_table_size = 64M
max_heap_table_size = 64M
# MySQL taaskäivitamine
sudo systemctl restart mysql # Ubuntu/Debian
sudo systemctl restart mysqld # CentOS/RHELInnoDB optimeerimine
InnoDB on MySQL vaikimisi salvestusmootor. Optimeerige seda parema jõudluse saavutamiseks:
# Failis /etc/mysql/mysql.conf.d/mysqld.cnf või /etc/my.cnf
[mysqld]
# InnoDB puhvripool (kasutage 70-80% saadaolevast RAM-ist)
innodb_buffer_pool_size = 2G
# InnoDB logifaili suurus
innodb_log_file_size = 512M
# InnoDB väljutamismeetod (SSD jaoks)
innodb_flush_method = O_DIRECT
# InnoDB I/O niidid
innodb_read_io_threads = 4
innodb_write_io_threads = 4
# InnoDB logi väljutamine tehingu kinnitamisel
innodb_flush_log_at_trx_commit = 2Päringute vahemälu konfigureerimine
Päringute vahemälu võib parandada jõudlust lugemisintensiivsete töökoormuste jaoks (Märkus: Päringute vahemälu on MySQL 8.0-s aegunud):
# MySQL 5.7 ja varasemate versioonide jaoks
[mysqld]
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 2M
# Päringute vahemälu oleku kontrollimine
mysql> SHOW VARIABLES LIKE 'query_cache%';
# Päringute vahemälu statistika kontrollimine
mysql> SHOW STATUS LIKE 'Qcache%';Indeksite optimeerimine
Õige indekseerimine on kriitiline päringute jõudluse jaoks:
# Tabeli analüüsimine indeksite statistika uuendamiseks
ANALYZE TABLE table_name;
# Kasutamata indeksite kontrollimine
SELECT * FROM sys.schema_unused_indexes;
# Indeksi loomine
CREATE INDEX idx_column ON table_name(column_name);
# Liitindeksi loomine
CREATE INDEX idx_multi ON table_name(col1, col2, col3);
# Indeksite kuvamine
SHOW INDEXES FROM table_name;
# Kasutamata indeksi kustutamine
DROP INDEX idx_name ON table_name;Päringute optimeerimine
Optimeerige oma SQL päringuid parema jõudluse saavutamiseks:
- Kasutage EXPLAIN-i päringute täitmisplaanide analüüsimiseks: EXPLAIN SELECT * FROM table WHERE column = 'value'
- Vältige SELECT * - valige ainult vajalikud veerud
- Kasutage LIMIT-i tulemuste komplektide piiramiseks
- Kasutage õigeid WHERE klausleid indekseeritud veergudega
- Vältige funktsioone WHERE klauslites (nt WHERE YEAR(date) = 2026 → WHERE date >= '2026-01-01')
- Kasutage JOIN-e alampäringute asemel, kui võimalik
- Kasutage UNION-i OR-i asemel mitme tingimuse jaoks, kui see on sobiv
MySQL jõudluse jälgimine
# MySQL oleku kontrollimine
mysql> SHOW STATUS;
# Aeglaste päringute kontrollimine
mysql> SHOW VARIABLES LIKE 'slow_query%';
# Aeglaste päringute logi lubamine
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
# Protsesside loendi kontrollimine
mysql> SHOW PROCESSLIST;
# Tabeli oleku kontrollimine
mysql> SHOW TABLE STATUS LIKE 'table_name';
# InnoDB oleku kontrollimine
mysql> SHOW ENGINE INNODB STATUS;Jõudluse optimeerimise näpunäited
- Käivitage regulaarselt OPTIMIZE TABLE tabelite defragmenteerimiseks
- Jälgige aeglaste päringute logi ja optimeerige aeglased päringud
- Kasutage ühenduste koondamist ühenduste üldkulude vähendamiseks
- Partitioneerige suured tabelid kuupäeva või vahemiku järgi parema jõudluse saavutamiseks
- Kasutage lugemisreplikaate lugemisintensiivsete töökoormuste jaoks
- Hoidke MySQL ajakohaselt uusima stabiilse versiooniga
- Jälgige kettale I/O-d ja kaaluge SSD/NVMe salvestusruumi kasutamist
- Kasutage EXPLAIN ANALYZE (MySQL 8.0+) detailseks päringute analüüsiks