Hoe om MySQL Prestasie te Optimaliseer
Volledige gids tot die optimalisering van MySQL databasis prestasie: konfigurasie afstelling, navraag optimalisering, indeksering, en monitering.

MySQL prestasie optimalisering is krities vir toepassings wat groot hoeveelhede data of hoë verkeer hanteer. Hierdie gids dek essensiële tegnieke om MySQL prestasie te verbeter, van konfigurasie afstelling tot navraag optimalisering.
Optimaliseer MySQL Konfigurasie
Redigeer MySQL konfigurasie lêer om prestasie te optimaliseer gebaseer op jou bediener hulpbronne:
# Redigeer MySQL konfigurasie (Ubuntu/Debian)
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# Redigeer MySQL konfigurasie (CentOS/RHEL)
sudo nano /etc/my.cnf
# Voeg by of wysig hierdie instellings:
[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
# Herstart MySQL
sudo systemctl restart mysql # Ubuntu/Debian
sudo systemctl restart mysqld # CentOS/RHELInnoDB Optimalisering
InnoDB is MySQL se standaard stoor enjin. Optimaliseer dit vir beter prestasie:
# In /etc/mysql/mysql.conf.d/mysqld.cnf of /etc/my.cnf
[mysqld]
# InnoDB buffer poel (gebruik 70-80% van beskikbare RAM)
innodb_buffer_pool_size = 2G
# InnoDB log lêer grootte
innodb_log_file_size = 512M
# InnoDB spoel metode (vir SSD)
innodb_flush_method = O_DIRECT
# InnoDB I/O drade
innodb_read_io_threads = 4
innodb_write_io_threads = 4
# InnoDB spoel log by transaksie verbintenis
innodb_flush_log_at_trx_commit = 2Navraag Kas Konfigurasie
Navraag kas kan prestasie verbeter vir lees-swaar werklading (Let wel: Navraag kas is verouderd in MySQL 8.0):
# Vir MySQL 5.7 en vroeër
[mysqld]
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 2M
# Kontroleer navraag kas status
mysql> SHOW VARIABLES LIKE 'query_cache%';
# Kontroleer navraag kas statistieke
mysql> SHOW STATUS LIKE 'Qcache%';Indeks Optimalisering
Behoorlike indeksering is krities vir navraag prestasie:
# Analiseer tabel om indeks statistieke op te dateer
ANALYZE TABLE table_name;
# Kontroleer ongebruikte indekse
SELECT * FROM sys.schema_unused_indexes;
# Skep indeks
CREATE INDEX idx_column ON table_name(column_name);
# Skep saamgestelde indeks
CREATE INDEX idx_multi ON table_name(col1, col2, col3);
# Wys indekse
SHOW INDEXES FROM table_name;
# Verwyder ongebruikte indeks
DROP INDEX idx_name ON table_name;Navraag Optimalisering
Optimaliseer jou SQL navrae vir beter prestasie:
- Gebruik EXPLAIN om navraag uitvoering planne te analiseer: EXPLAIN SELECT * FROM table WHERE column = 'value'
- Vermy SELECT * - kies slegs benodigde kolomme
- Gebruik LIMIT om resultaat stelle te beperk
- Gebruik behoorlike WHERE klousules met geïndekseerde kolomme
- Vermy funksies in WHERE klousules (bv., WHERE YEAR(date) = 2026 → WHERE date >= '2026-01-01')
- Gebruik JOINs in plaas van subnavrae waar moontlik
- Gebruik UNION in plaas van OR vir veelvuldige voorwaardes waar toepaslik
Monitor MySQL Prestasie
# Kontroleer MySQL status
mysql> SHOW STATUS;
# Kontroleer stadige navrae
mysql> SHOW VARIABLES LIKE 'slow_query%';
# Aktiveer stadige navraag log
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
# Kontroleer proses lys
mysql> SHOW PROCESSLIST;
# Kontroleer tabel status
mysql> SHOW TABLE STATUS LIKE 'table_name';
# Kontroleer InnoDB status
mysql> SHOW ENGINE INNODB STATUS;Prestasie Optimalisering Wenke
- Voer gereeld OPTIMIZE TABLE uit om tabelle te defragmenteer
- Monitor stadige navraag log en optimaliseer stadige navrae
- Gebruik verbindingspoeling om verbindings oorhoofse te verminder
- Partisioneer groot tabelle volgens datum of reeks vir beter prestasie
- Gebruik lees replikas vir lees-swaar werklading
- Hou MySQL op datum met die nuutste stabiele weergawe
- Monitor skyf I/O en oorweeg die gebruik van SSD/NVMe stoor
- Gebruik EXPLAIN ANALYZE (MySQL 8.0+) vir gedetailleerde navraag analise