慢查询日志和深度分页问题

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 慢查询日志和深度分页问题

公众号merlinsea


慢查询日志



背景

   在线上的环境中,sql语句的执行时间是无法直接通过终端窗口查看的,终端查看sql执行时间也不符合合理的规范流程, 那么此时就需要开启mysql的慢查询日志。开启了慢查询日志以后,mysql会将那些查询结果很慢的sql语句记录到慢查询日志中。那么一条sql的执行时间多久才被认为是慢呢?


开启慢查询日志的方法:


注意:以下的1-5步的方式开启慢查询日志是【临时的】,一旦mysql服务重启,那么就又会恢复到关闭慢查询日志的状态。核心是重启mysql服务的时候,会读取配置文件,配置文件是关闭慢查询日志的,那么重启的时候就会关闭慢查询日志。


1、查看慢查询日志是否开启


show variables like 'slow%';

640.jpg


2、开启慢查询日志


set global slow_qurey_log = 'on';


3、修改日志存放位置【也可以不修改,那么就是默认位置】


set global slow_query_log_file = '路径';


4、查看慢查询时间阈值


show variables like '%long%';

640.jpg


5、修改慢查询的时间阈值【默认单位是秒】


set long_query_time=0.4;


开启慢查询日志永久生效的方法


修改配置文件 vi /etc/my.cnf
[mysqld]
    slow_query_log = 1
    long_query_time = 0.1
    slow_query_log_file =/usr/local/mysql/mysql_slow.log
最后必须重启mysql服务才能生效!


深度分页问题



1、深度分页问题介绍

   后端开发中为了防⽌⼀次性加载太多数据导致内存、磁盘IO都开销过⼤,经常需要分页展示,这个时候就需要⽤到MySQL的LIMIT关键字。在查询过程中limit m,n表示从第m条数据之后取,取n条数据返回,这种情况下如果m过大,那么要先遍历前m条记录以后才能取到后n条记录返回,这个先遍历的过程就是深度分页问题。


2、深度分页的sql语句


select * from user
where age>10 
order by age desc 
limit 8000000,1000;

640.jpg


3、性能慢的原因分析:

   1、通过where条件检索数据的时候是否用到了索引

   2、buffer中的数据量过大,导致limit m,n的时候需要先遍历了大量的m条记录以后才能取出后面n条记录。


4、优化思路:

   1、通过主键自增索引减少放入buffer内存中的数据量 select * from user where id>7999999 and age>10 order by age desc limit 10000;

   2、Elastic Search搜索引擎优化(倒排索引)


关于leetcode算法训练营:

   加我微信号私聊参加训练营~

本人用c++刷了800道左右的算法,java语言刷了600道左右的算法题,并对这些题做了详细的个人总结。本科期间系统学习了数据结构与算法课程,同时考研过程中写完了率辉主编的《2020年数据结构高分笔记》和《数据结构1000题》,看完的视频包括《mooc浙大数据结构国家精品课程》和《王道考研408数据结构课程》,《王道2019年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等等,所以快加入训练营吧,我们一起进步

奔跑的小梁,公众号:梁霖编程工具库算法训练营,快来参加


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7月前
|
SQL 监控 关系型数据库
深入理解MySQL日志:通用查询、慢查询和错误日志详解
深入理解MySQL日志:通用查询、慢查询和错误日志详解
1591 0
|
1月前
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL的慢查询日志
MySQL的慢查询日志用于记录执行时间超过设定阈值的SQL语句,帮助数据库管理员识别并优化性能问题。通过`mysqldumpslow`工具可查看日志。本文介绍了如何检查、启用及配置慢查询日志,并通过实例演示了慢查询的记录与分析过程。
158 3
|
1月前
|
监控 关系型数据库 MySQL
分析慢查询日志
【10月更文挑战第29天】分析慢查询日志
47 3
|
1月前
|
监控 关系型数据库 数据库
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
52 2
|
6月前
|
SQL 关系型数据库 MySQL
|
2月前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
34 3
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
78 2
|
6月前
|
SQL 监控 关系型数据库
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
945 0
|
7月前
|
SQL 监控 关系型数据库
【MySQL学习】MySQL的慢查询日志和错误日志
【MySQL学习】MySQL的慢查询日志和错误日志
114 1
|
7月前
|
存储 监控 NoSQL
【Redis技术专区】「优化案例」谈谈使用Redis慢查询日志以及Redis慢查询分析指南
【Redis技术专区】「优化案例」谈谈使用Redis慢查询日志以及Redis慢查询分析指南
182 0