有关MySQL中变量的详细解析请看我的另一篇博客:
MySQL中变量的详解
1.字符集相关变量
show variables like "%char%";
character_set_client//为客户端编码方式;
character_set_connection//为建立连接使用的编码;
character_set_database//数据库的编码;
character_set_results//结果集的编码;
character_set_server//数据库服务器的编码;
character_set_filesystem//文件系统的编码格式;
character_set_system//数据库系统使用的编码格式;
2.缓冲池相关变量
show variables like %buffer_pool%;
innodb_buffer_pool_size
//配置缓冲池的大小,在内存允许的情况下,DBA往往会建议调大这个参数,越多数据和索引放到内存里,数据库的性能会越好。
innodb_old_blocks_pct
//老生代占整个LRU链长度的比例,默认是37,即整个LRU中新生代与老生代长度比例是63:37。如果把这个参数设为100,就退化为普通LRU了。
innodb_old_blocks_time
//老生代停留时间窗口,单位是毫秒,默认是1000,即同时满足“被访问”与“在老生代停留时间超过1秒”两个条件,才会被插入到新生代头部。
3.查询缓存相关的变量
show global status like '%query_cache%';
query_cache_min_res_unit//查询缓存中内存块的最小分配单位,默认为4K
query_cache_limit//单个查询结果能缓存的最大值,默认为1M,对于查询结果过大而无法缓存的语句,建议使用sql_no_cache
query_cache_size//查询缓存总共可用的内存空间;单位为字节,必须是1024整数倍
query_cache_wlock_invalidate//如果表被其它session锁定,是否可以从查询缓存中返回结果,默认值为off,on表示不允许
query_cache_type//是否开启缓存功能,on,off,demand
show global status like 'Qcache%';
Qcache_free_blocks//处于空闲状态query cache中内存的block数量
Qcache_total_blocks//query cache中总的block,当Qcache_free_blocks相对此值较大时,可能有内存碎片,执行FLUSH QUERY CACHE清理碎片
Qcache_free_memory//处于空闲状态的query cache内存总量
Qcache_hits//命中次数
Qcache_inserts//向query cache中插入新的query cache的次数,即未命中的次数
Qcache_lowmem_prunes//记录因为内存不足而被移出缓存的查询数
Qcache_not_cached//没有被cache的sql数,包括无法被cache的sql以及由于query_cache_type设置的不会被cache的sql语句
Qcache_queries_in_cache//在query cache中的sql数量
重要指标的计算:
(1)缓存中内存块的最小分配单位(query_cache_min_res_unit)
(query_chche_size - Qcache_free_memory) / Qcache_queries_in_cache
(2)缓存命中率
Qcache_hits / (Qcache_hits + Qcache_inserts) * 100%
(3)缓存内存使用率
(query_cache_size - Qcache_free_memory) / query_cache_size * 100%
4.SQL优化相关变量
show variables like "%pro%";
profiling
show profiles;//查询所有的查询信息
SHOW PROFILE ... FOR QUERY QID;//通过指定查询ID来查询整个执行过程中多种资源的消耗情况,如 CPU,IO,IPC,SWAP 等,以及发生的 PAGE FAULTS,CONTEXT SWITCHE 等等,同时还能得到该 Query 执行过程中 MySQL 所调用的各个函数在源文件中的位置。
show profile cpu,block io for query QID;//获取 CPU 和 Block IO 的消耗
5.查询DML语句执行次数
show [global] status like 'com_dml';
show [global] status like 'com_select';//查看select语句的执行数
show [global] status like 'com_insert';//查看insert语句的执行数
show [global] status like 'com_update';//查看update语句的执行数
show [global] status like 'com_delete';//查看delete语句的执行数
6.查询线程相关变量
show status like '%thread%';
Delayed_insert_threads
Performance_schema_thread_classes_lost
Performance_schema_thread_instances_lost
Slow_launch_threads//查看创建时间超过slow_launch_time秒的线程数
Threads_cached//线程缓存内的线程的数量
Threads_connected//当前打开的连接的数量
Threads_created//创建用来处理连接的线程数。如果Threads_created较大,你可能要增加thread_cache_size值。
Threads_running//激活的(非睡眠状态)线程数
7.查询MySQL连接数相关变量
show status like 'connections';//查看试图连接到MySQL(不管是否连接成功)的连接数
show variables like '%connections%';//连接数
show variables like '%max_connections%'; //最大连接数
show full processlist;//当前连接数
8.查询slow相关变量
show status like '%slow%';
Slow_launch_threads//查看创建时间超过slow_launch_time秒的线程数。
Slow_queries//查看查询时间超过long_query_time秒的查询的个数。
show variables like '%slow%';
log_slow_admin_statements OFF
log_slow_slave_statements OFF
slow_launch_time 2
slow_query_log OFF //慢查询开关
slow_query_log_file /var/lib/mysql/xxx.log//慢查询日志输出文件的位置
9.查询日志相关的变量
show variables like '%log%';