初识MySQL慢查询
作者:互联网
什么是mysql的慢查询
1、就是定义一个MySQL中的全局变量,告诉mysql超时多久的sql查询算是慢查询,并把慢查询的日志保存的一个日志文件中。至于配置项在哪里,大概就是在mysql的my.cnf文件中,如下图所示:
2、慢查询生成的日志内容格式解析,
就是常见的执行语句与,查询的时长,等字段说明
***特殊说明:***日志会把所有执行的查询都写入,无论是否为完全一样的查询内容,但是在prometheus之mysqld_exporter中只会统计一次,不会统计为多次
3、数据库其他指标说明:
最大连接数、当前连接数,当前QPS(每秒执行的请求数)、当前TPS(每秒执行的会话数)、当前是否开启了慢查询日志记录等
查询的语句如下:
show global status like ‘Threads_connected’;#查看mysql当前的连接数
show global variables like ‘%max_connections%’;#查看mysql数据当前配置的最大连接数
这里面代表慢查询时长和日志记录已经启用,打开慢查询日志可能会对系统性能有一点点影响,如果你的MySQL是主-从结构,可以考虑打开其中一台从服务器的慢查询日志,这样既可以监控慢查询,对系统性能影响又小,另mysql有自带的命令mysqldumpslow可进行查询,例下列命令可以查出访问次数最多的20个sql语句
mysqldumpslow -s c -t 20 52348ebf1b2b-slow.log
4、mysql数据库缓存池的作用
缓冲池的应用:
缓冲池很大程度减少了磁盘 I/O 带来的开销,通过将操作的数据行所在的数据页加载到缓冲池可以提高 SQL 的执行速度。
缓冲池的预读机制
为了减少磁盘 I/O,Innodb 通过在缓冲池中提前读取多个数据页来进行优化,这种方式叫作预读。我们的mysqld-exporter可以监控缓存池的各个方面使用情况,如下图:
缓冲池的空间管理传统的LRU方法对于缓冲池来说,会导致预读失效和缓冲池污染两种情况,因此这种传统的方式并不适用缓冲池的空间管理。
基于对 LRU 方法的优化,Msyql 设计了冷热数据分离的处理方案,将LRU链表分为热数据区和冷数据区两部分,这样就可以解决预读失效和缓冲池污染的情况。
标签:缓冲,MySQL,连接数,查询,初识,预读,mysql,日志 来源: https://blog.csdn.net/weixin_43628742/article/details/118030606