mysql负载高分析
- table_open_cache
-
SHOW STATUS LIKE 'Open%tables';
SHOW global variables LIKE '%table%'; # 如果你发现 open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_open_cache的值了 set global table_open_cache=2000 ;
-
- key_buffer_size
-
SHOW STATUS LIKE 'key_read%';
#key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好.设置key_buffer_size
set global key_buffer_size=2048M ;
-
- query_cache_size
query_cache_size # MySQL查询操作缓冲区的大小,通过以下做法调整:SHOW STATUS LIKE 'Qcache%'; 如果Qcache_lowmem_prunes该参数记录有多少条查询因为内存不足而被移除出查询缓存。通过这个值,用户可以适当的调整缓存大小。如果该值非常大,则表明经常出现缓冲不够的情况,需要增加缓存大小;Qcache_free_memory:查询缓存的内存大小,通过这个参数可以很清晰的知道当前系统的查询内存是否够用,是多了,还是不够用,我们可以根据实际情况做出调整。一般情况下4G内存设置64M足够了。
show global variables like 'query_cache_size';
set global query_cache_size=134217728 ;
- show processlist
查看进程
select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx;
- show status like '%Threads%';
查看线程
- show OPEN TABLES where In_use > 0;
查看锁表状态