云栖问答

找不到答案?去提问题

数据存储与数据库 SQL 2018-10-30 18:47:38

[@饭娱咖啡][¥20]对于慢sql有没有什么比较实用的诊断和处理方法?

对于慢sql有没有什么比较实用的诊断和处理方法?

8个回答

1

饭娱咖啡

诊断 SQL 执行的快慢有两种方法:
1.代码中的插件:你在执行功能的时候,通过控制台可以直接看到 SQL 的执行时间
2.数据库工具:Oracle 的工具 PL/SQL Developer,MySQL 的工具 Navicat。你直接把 SQL 语句放在工具中跑,你能直观的看到查询的结果以及执行的时间。

SQL调优:
可以参考《阿里巴巴Java开发手册(详尽版)》中,关于 MySQL 数据库的章节。
下面列举书中的几个点:
1.页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决。
2.建组合索引的时候,区分度最高的在最左边。
3.不要使用count(列名)或count(常量)来替代count(*)

0

李八郎

放到工具的优化建议跑一下

0

1510805476609588

show processlist看看,找到sql就想办法优化吧,尽量不用join,缓存能不能帮上忙,执行计划看看索引执行情况,也就这些了

0

fuxt

查看SQL的执行计划

0

1515046446737561

Oracle的话,非常清楚哪条SQL就看执行计划,根据经验,一般都是业务逻辑不清导致胡乱join或者缺少join引起。纯技术一般要加hint解决。如果不清楚哪条SQL则调取aws报表查看top SQL。

0

时序

DB端:如果你不能接触到服务器,可以联系dba打开slow sql日志,批量跟踪一段时间内的慢sql。
开发端: 自己的设计的sql可以在各种数据库的客户端上走一下执行计划,这个功能每个数据库都有,可以预测一下有没有全表扫描等常见sql问题。 如果有,就要结合自己的表查询语句看看如何更好的优化一下当前的查询。

0

1426694731350515

这样也可以

0

zengjianjay

慢SQL一般就直接在DB端可以全部输出来,提到解决方案,应该从多个方面入手解决:
1、如果慢SQL是因为业务设计原因,考虑是否通过业务改造避免,比如原来要查30天的数据,现在查7天也能满足需求
2、将DB的查询转成更高效的K-V或者内存缓存起来,有模糊查询的,走搜索引擎
3、进行SQL语句:看下表是否where、order的字段未加索引或者join出来太多行
4、进行分库分表,将大表拆小
5、分析服务器性能,看下是不是因为服务TPS过高导致
6、分析网络问题,执行简单的SQL看下服务器响应时间
总之,慢SQL需要从架构、业务代码、SQL本身、DB服务器、网络等多方面去排查和分析

1
GO
6723
浏览
0
收藏
邀请他人回答
云数据库SQL Server,具有企业许可授权,权限更为开放,引擎功能更为强大。能完美支持Windows平台的....

提供海量、安全和高可靠的云存储服务。RESTful API的平台无关性,容量和处理能力的弹性扩展,按实际容量付费...

快速、完全托管的TB/PB级数据仓库解决方案,向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更...

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...