Provozování MySQL s optimálním nastavením pro konkrétní zdroje pomáhá zvládat větší zatížení serveru a zabraňuje zpomalení serveru. Obecně platí, že po vyladění Apache pro zvládnutí větších zátěží je výhodné vyladit MySQL na další připojení.
<šablona x-if=visible><šablona x-if=$isMobile()>
Ladění databáze je rozsáhlé téma a tato příručka pokrývá pouze základy úpravy vaší konfigurace MySQL. Velké databáze MySQL mohou vyžadovat značné množství paměti. Z tohoto důvodu pro taková nastavení doporučujeme použít aHigh Memory Linode.
Poznámka Kroky v této příručce vyžadují oprávnění root. Níže uvedené kroky spusťte jako root nebo pomocí sudo
předpona. Další informace o oprávněních naleznete v naší příručce Uživatelé a skupiny.
Nástroje, které mohou pomoci optimalizovat MySQL
Chcete-li zjistit, zda je třeba vaši databázi MySQL překonfigurovat, je nejlepší se podívat na to, jak si nyní vedou vaše zdroje. To lze provést pomocí příkazu thetop nebo pomocí služby LinodeLongview. Přinejmenším byste se měli seznámit s využitím paměti RAM a CPU vašeho serveru, které lze zjistit pomocí těchto příkazů:
echo [PID] [MEM] [PATH] && ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -20
MySQLTuner
Skript MySQLTuner vyhodnotí vaši instalaci MySQL a poté vytvoří návrhy pro zvýšení výkonu a stability vašeho serveru.
-
Stáhněte si skript MySQLTuner:
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
-
Změňte oprávnění skriptů tak, aby byly spustitelné:
chmod +x mysqltuner.pl
-
Spusťte
mysqltuner.pl
skript. Budete vyzváni k zadání přihlašovacího jména a hesla správce MySQL:./mysqltuner.pl
-
Skript vrátí výsledky podobné výstupu níže:
MySQLTuner nabízí návrhy, jak zlepšit výkon databáze. Pokud jste opatrní při aktualizaci databáze sami, následování návrhů MySQLTuner je jedním z bezpečnějších způsobů, jak zlepšit výkon databáze.>> MySQLTuner 1.4.0 - Major Hayden <[email protected]> >> Bug reports, feature requests, and downloads at http://mysqltuner.com/ >> Run with '--help' for additional options and output filtering Please enter your MySQL administrative login: root Please enter your MySQL administrative password: [OK] Currently running supported MySQL version 5.5.41-0+wheezy1 [OK] Operating on 64-bit architecture -------- Storage Engine Statistics ------------------------------------------- [--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM [--] Data in InnoDB tables: 1M (Tables: 11) [--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17) [!!] Total fragmented tables: 11 -------- Security Recommendations ------------------------------------------- [OK] All database users have passwords assigned -------- Performance Metrics ------------------------------------------------- [--] Up for: 47s (113 q [2.404 qps], 42 conn, TX: 19K, RX: 7K) [--] Reads / Writes: 100% / 0% [--] Total buffers: 192.0M global + 2.7M per thread (151 max threads) [OK] Maximum possible memory usage: 597.8M (60% of installed RAM) [OK] Slow queries: 0% (0/113) [OK] Highest usage of available connections: 0% (1/151) [OK] Key buffer size / total MyISAM indexes: 16.0M/99.0K [!!] Query cache efficiency: 0.0% (0 cached / 71 selects) [OK] Query cache prunes per day: 0 [OK] Temporary tables created on disk: 25% (54 on disk / 213 total) [OK] Thread cache hit rate: 97% (1 created / 42 connections) [OK] Table cache hit rate: 24% (52 open / 215 opened) [OK] Open file limit used: 4% (48/1K) [OK] Table locks acquired immediately: 100% (62 immediate / 62 locks) [OK] InnoDB buffer pool / data size: 128.0M/1.2M [OK] InnoDB log waits: 0 -------- Recommendations ----------------------------------------------------- General recommendations: Run OPTIMIZE TABLE to defragment tables for better performance Enable the slow query log to troubleshoot bad queries Variables to adjust: query_cache_limit (> 1M, or use smaller result sets)
Ladění MySQL
Při změně konfigurace MySQL dávejte pozor na změny a na to, jak ovlivňují vaši databázi. I když se budete řídit pokyny programů, jako je MySQLTuner, je nejlepší tomuto procesu porozumět.
Konfigurační soubor MySQL uložený v následujícím umístění:/etc/mysql/my.cnf
.
PoznámkaPřed aktualizací konfigurace MySQL vytvořte zálohu souboru
my.cnf
soubor:cp /etc/mysql/my.cnf ~/my.cnf.backup
Doporučený postup doporučuje provést malé změny, jednu po druhé, a poté po každé změně sledovat server. Po každé změně byste měli restartovat MySQL:
Pro distribuce používající systemd:
systemctl restart mysqld
Pro distribuce s různými systémy init:
service mysql restart
Při změně hodnot v souboru
my.cnf
souboru, ujistěte se, že řádek, který měníte, nebyl zakomentován librou (#
) prefix.
key_buffer
Změna key_buffer
alokuje více paměti MySQL, což může podstatně zrychlit vaše databáze, za předpokladu, že máte volnou paměť. key_buffer
Velikost by obecně neměla zabírat více než 25 procent systémové paměti při použití tabulkového enginu MyISAM a až 70 procent v případě InnoDB. Pokud je hodnota nastavena příliš vysoko, dochází k plýtvání zdroji.
Podle dokumentace MySQL se pro servery s 256 MB (nebo více) RAM s mnoha tabulkami doporučuje nastavení 64 MB. Servery se 128 MB RAM a méně tabulkami lze nastavit na 16 M, což je výchozí hodnota. Weby s ještě menším počtem zdrojů a tabulek mohou mít tuto hodnotu nastavenou níže.
max_allowed_packet
Tento parametr umožňuje nastavit maximální velikost odesílatelného paketu. Paket je jeden stav SQL, jeden řádek odeslaný klientovi nebo protokol odeslaný ze zdrojové databáze do repliky. Pokud víte, že váš server MySQL bude zpracovávat velké pakety, je nejlepší toto zvýšit na velikost vašeho největšího paketu. Pokud je tato hodnota nastavena příliš malá, zobrazí se chyba v protokolu chyb.
thread_stack
Tato hodnota obsahuje velikost zásobníku pro každé vlákno. MySQL bere v úvahu výchozí hodnotu thread_stack
variabilní dostačující pro běžné použití; měla by však nastat chyba týkající se thread_stack
být přihlášen, toto lze zvýšit.
thread_cache_size
Pokud thread_cache_size
je „vypnuto“ (nastaveno na 0), pak každé nově vytvářené připojení vyžaduje vytvoření nového vlákna. Když se spoje rozpojí, závit se zničí. V opačném případě tato hodnota nastavuje počet nepoužívaných vláken, která se mají uložit do mezipaměti, dokud je nebude nutné použít pro připojení. Obecně má toto nastavení malý vliv na výkon, pokud nepřijímáte stovky připojení za minutu, kdy by měla být tato hodnota zvýšena, aby bylo možné většinu připojení vytvořit na vláknech uložených v mezipaměti.
max_connections
Tento parametr nastavuje maximální množství souběžných spojení. Před nastavením tohoto čísla je nejlepší zvážit maximální počet připojení, která jste měli v minulosti, takže mezi tímto horním číslem a hodnotou max_connections
budete mít vyrovnávací paměť. hodnota. Upozorňujeme, že toto neoznačuje maximální počet uživatelů na vašem webu najednou; spíše zobrazuje maximální počet uživatelů, kteří požadují současně.
table_cache
Tato hodnota by měla být vyšší než vaše open_tables
hodnota. K určení této hodnoty použijte:
| |
Další informace
Další informace o tomto tématu můžete získat v následujících zdrojích. Přestože jsou poskytovány v naději, že budou užitečné, vezměte prosím na vědomí, že nemůžeme ručit za přesnost nebo aktuálnost externě hostovaných materiálů.
- Knihovna dokumentace MySQL
- Nastavení parametrů serveru MySQL
- MySQLTuner