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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 慢查询日志和深度分页问题

公众号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日志并进行多维度分析。
相关文章
|
20天前
|
SQL 监控 关系型数据库
【MySQL学习】MySQL的慢查询日志和错误日志
【MySQL学习】MySQL的慢查询日志和错误日志
|
20天前
|
SQL 监控 关系型数据库
深入理解MySQL日志:通用查询、慢查询和错误日志详解
深入理解MySQL日志:通用查询、慢查询和错误日志详解
571 0
|
20天前
|
存储 监控 NoSQL
【Redis技术专区】「优化案例」谈谈使用Redis慢查询日志以及Redis慢查询分析指南
【Redis技术专区】「优化案例」谈谈使用Redis慢查询日志以及Redis慢查询分析指南
59 0
|
20天前
|
SQL 关系型数据库 MySQL
MySQL SQL性能分析 慢查询日志、explain使用
MySQL SQL性能分析 慢查询日志、explain使用
139 0
|
20天前
|
SQL 存储 关系型数据库
②⑩ 【MySQL Log】详解MySQL日志:错误日志、二进制日志、查询日志、慢查询日志
②⑩ 【MySQL Log】详解MySQL日志:错误日志、二进制日志、查询日志、慢查询日志
86 0
|
20天前
|
SQL 监控 关系型数据库
MySQL调优之慢查询日志应用
MySQL调优之慢查询日志应用
55 0
|
20天前
|
Java Unix 数据库连接
Mybatis【结果集映射、日志、分页】
Mybatis【结果集映射、日志、分页】
|
20天前
|
SQL 数据库 开发者
百度搜索:蓝易云【SQL高级之慢查询日志?】
慢查询日志是数据库性能优化中一个重要的工具,通过记录执行时间较长的查询语句,帮助识别和解决数据库中的性能问题。它提供了有价值的信息,帮助开发者和管理员优化查询和提升数据库的性能。
57 6
|
8月前
|
关系型数据库 MySQL 索引
mysql之开启慢查询日志
mysql之开启慢查询日志
|
8月前
|
SQL 监控 关系型数据库
【MYSQL高级】Mysql找出执行慢的SQL【慢查询日志使用与分析】
【MYSQL高级】Mysql找出执行慢的SQL【慢查询日志使用与分析】
572 0