返回顶部
首页 > 资讯 > 数据库 >sql慢查询解决方案
  • 741
分享到

sql慢查询解决方案

sql数据库mysqlPoweredby金山文档 2023-09-01 07:09:46 741人浏览 独家记忆
摘要

一、慢查询产生原因 大体有以下三种可能: 1、索引没有设计好; 2、sql 语句没写好; 3、Mysql 选错了索引。 二、慢查询解决方案 1、针对索引没有设计好的解决方案:给表重新加索引重新加索引 2、针对SQL 语

一、慢查询产生原因

大体有以下三种可能:

1、索引没有设计好;

2、sql 语句没写好;

3、Mysql 选错了索引。

二、慢查询解决方案

1、针对索引没有设计好的解决方案:给表重新加索引重新加索引

2、针对SQL 语句没写好的解决方案:重写sql语句

【下一版本修复】:检查业务代码中的sql,是否使用了条件字段函数操作、是否有隐式转化【

①检查是否在搜索条件中使用了条件字段函数操作(例如month活动id+1=1000等),导致优化器放弃走树搜索功能,走全索引扫描

② 比如id值为string,查询语句用了int(对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。)

③ 由于字符集不同(utf8mb4),导致表连接查询的时候用不上关联字段索引,需要把转化放在条件=的后面,就可以使用索引

a、两张表的字符集改成统一

b、sql改写,需要把转化放在条件=的后面来使用索引】

【线上紧急修复】:数据库执行层:使用query_rewrite功能让执行的sql重写成可以使用索引的语句

3、针对mysql 选错了索引的解决方案:

【线上紧急修复】:就是给这个语句加上 force index,使用查询重写功能,给原来的语句加上 force index,也可以解决这个问题。

【不紧急】:

① 使用force index:分析不同索引的查询条数,比如用索引a需要查询5000条、索引b需要查询1000条,此时明显选索引b查询效率更高,但是mysql优化器选择了索引a(因为优化器还会考虑回表、排序等综合因素导致选错),我们需要 force index与原sql做对比,根据结果考虑是否需要使用force index

② 改写语句:例如“select * from t where (a between 1 and 1000) and (b between 50000 and 100000) order by b limit 1;”语句中将”order by b limit 1” 改成 “order by b,a limit 1” ,要求按照 b,a 排序,就意味着使用这两个索引都需要排序。因此,扫描行数成了影响决策的主要条件

③在有些场景下,我们可以新建一个更合适的索引,来提供给优化器做选择,或删掉误用的索引。

三、预先检查方案:

1、上线前,在测试环境,把慢查询日志(slow log)打开,并且把 long_query_time 设置成 0,确保每个语句都会被记录入慢查询日志;

2、在测试表里插入模拟线上的数据,做一遍回归测试;

3、观察慢查询日志里每类语句的输出,特别留意 Rows_examined 字段是否与预期一致。

4、全量回归测试都是必要的。这时候,你需要工具帮你检查所有的 SQL 语句的返回结果。比如,你可以使用开源工具 pt-query-digest

来源地址:https://blog.csdn.net/weixin_43837268/article/details/129655778

您可能感兴趣的文档:

--结束END--

本文标题: sql慢查询解决方案

本文链接: https://lsjlt.com/news/387761.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • sql慢查询解决方案
    一、慢查询产生原因 大体有以下三种可能: 1、索引没有设计好; 2、SQL 语句没写好; 3、MySQL 选错了索引。 二、慢查询解决方案 1、针对索引没有设计好的解决方案:给表重新加索引重新加索引 2、针对SQL 语...
    99+
    2023-09-01
    sql 数据库 mysql Powered by 金山文档
  • MySQL慢查询以及解决方案详解
    目录一、前言二、慢查询2.1 什么是慢查询?2.2 慢查询配置1、慢查询日志2、未使用索引是否开启日志3、慢查询时间设置4、慢查询路径三、慢查询日志分析3.1 mysqldumpslow工具四、慢查询解决方案4.1 索引...
    99+
    2023-05-05
    mysql慢查询解决方案 mysql 慢查询 mysql 慢sql查询
  • mysql查询慢的原因和解决方案
    查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 ...
    99+
    2024-04-02
  • 慢查询sql详解
    慢查询sql 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边...
    99+
    2023-09-05
    sql mysql 数据库
  • SQL数据库容量大,查询速度慢,有何解决方案?
    首先应该确定是谁慢的,往往是程序处理方面的问题而不是数据库的问题。 程序方面应该尽可能的减少数据查询返回的内容,比如可以查询返回ID,然后再根据ID一条一条的查询具体内容,看似慢了,在数据量达的时候快很多 对于数据可以参照下面几点 1、优化...
    99+
    2023-09-02
    数据库 oracle mysql
  • MySQL慢查询现象解决案例
    目录背景1.查看上述语句的执行计划2.测试模拟背景 线上慢查询日志监控,得到如下的语句:  发现:select doc_text from t_wiki_doc_text where do...
    99+
    2024-04-02
  • Mybatis-Plus分页插件查询慢解决方案
    问题 需求反馈前端界面查询速度很慢。 分析 f12查看接口响应时间达到了5.47s。 查看后端代码逻辑,就是传了些参数,分页查询了一个列表的数据。分页插件使用的是mybatis-plus...
    99+
    2023-09-01
    mybatis mysql spring boot Powered by 金山文档
  • 一个20秒SQL慢查询优化处理方案
    目录1.背景2.复杂SQL语句的构成3.关联查询4.子查询5.耗时在哪?6.问题定位7.初步断定9.再进一步验证10.解决方案11.另外一个需要注意的点1.背景 页面无法正确获取数据...
    99+
    2024-04-02
  • Python查询oracle数据库速度慢的解决方案
    如下所示: conn = cx_Oracle.connect('username/password@ip:port/servername') cur = conn.cursor(...
    99+
    2024-04-02
  • MySQL排查慢查询SQL
    根据MySQL自带慢日志功能定位慢SQL 1、查询有关query的相关变量: show global variables like '%quer%';  参数解释: log_queries_not_using_indexes:是否记...
    99+
    2023-09-05
    mysql sql 数据库
  • sql in查询元素超过1000条的解决方案
    目录一、场景描述二、解决方案1、方案一:核心思路是,将集合拆分,使用or 连接。2、方案二:用子查询(临时表)+关联查询总结一、场景描述 查询机构下的人员,要同时查询出该机构及其所有下级机构的人员;比如查询北京市,不仅要...
    99+
    2023-03-06
    sql查询1000条数据 sql使用IN超过1000怎么处理 sql查询第10000条数据
  • sql in查询元素超过1000条的解决方案
    目录一、场景描述二、解决方案1、方案一:核心思路是,将集合拆分,使用or 连接。2、方案二:用子查询(临时表)+关联查询总结一、场景描述 查询机构下的人员,要同时查询出该机构及其所有...
    99+
    2023-03-06
    sql查询1000条数据 sql使用IN超过1000怎么处理 sql查询第10000条数据
  • mysql跨库查询解决方案
    第一种跨库查询,是在同一个mysql服务器下两个不同的数据库之间的联查,关系如下图 在同一个mysql服务器下,不同的两个数据直接加上库名就可以实现跨库查询了 select * from t_test1 t1, test2.t_...
    99+
    2023-08-19
    mysql
  • MySQL自带慢日志排查慢查询SQL
    目录1、查询有关query的相关变量:2、开启慢查询日志3. 设置慢查询阈值4.查看慢查询日志其他方式定位慢SQL 总结根据mysql自带慢日志功能定位慢SQL 1、查询有关query的相关变量: show g...
    99+
    2022-12-15
    mysql如何优化慢查询 mysql排查慢查询sql sql语句慢查询
  • 详解mysql跨库查询解决方案
    1.第一种跨库查询,是在同一个mysql服务器下两个不同的数据库之间的联查,关系如下图 在同一个mysql服务器下,不同的两个数据直接加上库名就可以实现跨库查询了 selec...
    99+
    2022-11-13
    mysql跨库查询
  • sql查询慢怎么优化
    运行缓慢的 sql 查询优化策略:确定查询瓶颈:使用 explain 或 explain analyze 语句。创建适当的索引:为经常使用的列创建索引。优化表连接:使用 hash 或 m...
    99+
    2024-06-03
  • SQL慢查询优化的方法是什么
    本篇内容主要讲解“SQL慢查询优化的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL慢查询优化的方法是什么”吧!1.背景页面无法正确获取数据,经排查原来是接口调用超时,而最后发现是...
    99+
    2023-06-26
  • SQL查询的解决方法有哪些
    本篇内容介绍了“SQL查询的解决方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!查询1下列表格由名...
    99+
    2024-04-02
  • MySQL慢查询优化解决问题
    目录1.  MySQL慢查询介绍2.发现问题(主动/被动)3.找到原因-对症下药1.  MySQL慢查询介绍   MySQL的慢查询日志是MySQL提供...
    99+
    2024-04-02
  • PostgreSQL查询速度慢如何解决
    PostgreSQL查询速度慢如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。并非每个PostgreSQL查询都会自动使用索引,只有在表的大小超过一个最小值,并且查询...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作