mysql常用监控指标
慢查询sql
慢查询:指执行速度低于设置的阀值的sql语句
作用:帮助定位查询速度较慢的sql语句,方便更好的优化数据库系统的性能
开启mysql慢查询日志
参数说明:
slow_query_log:慢查询日志开启状态【on:开启,off:关闭】
slow_query_log_file:慢查询日志存放位置
long_query_time:慢查询时长设置(超过该时长才会被记录)
设置步骤:
1、查询相关参数配置
show variables like "slow_query%";
show variables like "long_query_time";
2、开启慢查询并配置
开启慢查询日志
set global slow_query_log='ON';
#设置慢查询日志存放位置
set global slow_query_log_file='/data/slow_query.log';
#设置慢查询时间标准,设置之后会在下次会话才生效
set global long_query_time=1
连接数
利用mysql的sql语句监控mysql的连接数
show variables like "%connections%";
max_connections:所有与数据库建立连接的最大数量
max_user_connections:每个用户与数据库建立连接的最大数量
数据库内的最大连接时间
show variables like "%time%";
connection_timeout:最大连接时长
long_query_time:慢查询时长设置(超过该时长才会被记录)
查看当前数据库连接数
方法一:show processlist
方法二:show status like “%Thread%”
threads_connected:当前连接的数量
threads_created:曾经连接的数量
threads_running:当前正在处理状态的连接
监控缓存命中率
用户使用数据库服务器操作的过程:
用户向连接器发送sql语句,连接器先去缓存查找信息,如果在缓存中查找到结果,就返回给连接器,连接器再返回给用户(这是常见的流程);
如果在缓存中没查询到结果,就会先去分析器,再去优化器,之后去执行器,去执行引擎,最后返回给用户。
缓存命中率:所有查询语句,命中缓存的请求数,占所有请求的比例
查看是否开启缓存命中率
#缓存的开关
show variables like "%query_cache_type%";
#缓存的大小
show variables liel "%query_cache_size%";
开启缓存设置
mysql的配置文件my.ini或者my.cnf中:
1、query_cache_size:设置为具体大小
2、增加一行:query_cache_type=1
查看缓存相关选项
show global status like "QCache%";
Qcache_hits:缓存命中次数
Qcache_inserts:插入缓存次数
缓存命中率计算方式:
查询缓存命中率≈(Qcache_hits-Qcache_inserts)/Qcache_hits*100%
缓存命中率一般不低于99%
缓存失效原因
1、新的查询语句
2、表被修改过(insert、update,delete)
mysql锁
目的:解决客户端并发访问冲突问题
查看死锁
show OPEN TABLES where in_use>0;
UNLOCK TABLES;//解锁
锁定表
LOCK TABLES XX(表名) READ;
监控数据库索引
目的就是加快检索表中数据,尽快找到符合限制条件的记录id的辅助数据结构
主键id、自带索引,所以根据主键的查询结果,查询速度比较快(主要采取二分法)
非主键,可以添加索引,加快程序的运行速度