SQL优化【基础08】 - 耗能SQL分析一般流程思路

SQL执行慢排查以及优化思路 我今天梳理了 SQL 优化的思路,从步骤上看,我们需要先进行观察和分析,分析工具的使用在日常工作中还是很重要的。今天只介绍了常用的三种分析工具,实际上可以使用的分析工具还有很多。我在这里总结一下今天文章里提到的三种分析工具。我们可以通过慢查询日志定位执行慢的 SQL,然后通过 EXPLAIN 分析该 SQL 语句是否使用到了索引,以及具体的数据表访问方式是怎样的。我们也可以使用 SHOW PROFILE 进一步了解 SQL 每一步的执行时间,包括 I/O 和 CPU 等资源的使用情况。 阅读详情

最近常有网友问起耗能分析的思路,有时转来转去的,较浪费时间,这里小结下;结合实例讲解;


SQL>   select * from v$version;


BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE    11.2.0.2.0      Production
TNS for Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production

1. 如下这条SQL,它有没有什么问题,能不能优化?


2.很简单看下计划即可(这里有些人会问到有些跑很久才会出结果,所以你可以跑上10来S,然后ctrl+c中断看一个时间段即可)

如下我们可以看到,这条SQL存在两个表的全表扫描,时间上还是很快的(0.02),逻辑读2079,结合predicate information信息

自然会产生一个疑问,object_id有无索引?是否适合建索引?从最后的NOTE中也可以意识到,这条SQL中的涉及对象存在没有统计

信息的情况;


3.运行sosi命令也可以分别看到T1,T2类似的情况,没有统计信息;


4.进行统计收集,当然如果生产上时候不能做,你也可以通过select count( distinct object_id) from t1 ; 这样的方式,只是比较麻烦;


5.通过查看可以看到全表行数72624,object_id的唯一值的不重复数为72624-4=72620(扣去空值4,可见选择率相当的好);



6.T2的表也类似



7.接下来就顺理成章的创建索引,然后查看计划可以看到,时间变为0.01,逻辑读也从之前的2079->6;


SQL> create index idx_t1_id on t1(object_id);
SQL> create index idx_t2_id on t2(object_id);
SQL>




8.当然以上只是一个很简单的例子,在实际的生产环境中会更复杂;

比如:

1.有些变量很快,有些变量又存在很慢 解决方法:=>建立直方图 or  绑定计划(这个计划是通用的) ?

2.有些根据它SQL的写法和需要就非得全表扫描一个几十万的表  =>解决办法:减少频率,分区,修改业务逻辑等

3.有些是系统的参数要调整:如一个习惯使用parallel的HINT的系统,parallel_max_servers却设置的过小,那么你就需要结合CPU和IO进行调整;

4.有些是模型问题,比如明明物化视图能解决的,你非要用普通视图,那执行的速度上是可想而知的;

5.有些是SQL的写法上引起的,这种的解决要结合业务进行调整等价改写即可;

6.有些是执行频率过大,执行的时间段可以调整的也可以根据实际情况进行相应的调整;

7.还有些是执行计划上的改变引起的,那么你可以采用暂时固定计划的方式解决(baseline,sql profile);
8. and other ........



大数据开发之Hive SQL优化思路分享 Hive的优化主要分为:配置优化、SQL语句优化、任务优化等方案。 其中在开发过程中主要涉及到的可能是SQL优化这块。 优化的核心思想是: 减少数据量(例如分区、列剪裁)避免数据倾斜(例如加参数、Key打散)避免全表扫描(例如on添加加上分区等)减少job数(例如相同的on条件的join放在一起作为一个任务) HQL语句优化 1、使用分区剪裁、列剪裁 在分区剪裁中,当使用外关联时,如果将副表的过滤条件写在Where后面,那么就会先全表关联,之后再过滤。 select a.* from test1 a lef 阅读详情

相关推荐

MySQL数据分析实战:从SQL语法到性能优化的完整指南

在数据驱动的时代,掌握数据库技能已成为开发者和数据分析师的必备能力。无论是构建动态网站、开发企业级应用,还是进行商业智能分析,MySQL作为全球最流行的开源关系型数据库,都是绕不开的核心技术。然而,许多初学者在面对繁杂的SQL语法、复杂的表设计和性能优化时,常常感到无从下手,网上资料又过于零散或陈旧。本文将为你系统梳理MySQL数据分析的完整知识体系,从零开始,手把手带你搭建环境、学习核心语法、进行实战分析,并深入探讨性能优化与工程实践。无论你是编程小白,还是希望巩固数据库技能的开发者,都能通过本文构建起坚

weixin_34122810的博客 1654

如何度量SQL资源消耗

在理想情况下,要度量资源的消耗应该考虑数据库引擎使用的所有资源类型,包括:CPU、内存、磁盘以及网络。当然,这是能做到的。不过遗憾的是,得到并评估所有的数据要花费大量时间和努力,且通常只能对一个调优会话中有限的SQL语句这么做。还应该考虑当处理一行的时候,CPU处理的时间依赖于处理器的速度,很明显这在不同系统中是不一样的。此外,内存的使用量和返回的行数大致成正比,而磁盘和网络资源并不总是会用到。实

关注系统性能调优 1442

Hive SQL优化思路分享

2、尽量不要用COUNT DISTINCT,因为COUNT DISTINCT操作需要用一个Reduce Task来完成,这一个Reduce需要处理的数据量太大,就会导致整个Job很难完成,一般COUNT DISTINCT使用先GROUP BY在COUNT的方式替换,虽然会多用一个Job来完成,但在数据量大的情况下,这个绝对是值得的。原因是在Join操作的Reduce阶段,位于Join操作符左边的表的内容会被加载进内存,将条目少的表放在左边,可以有效减少发生OOM错误的几率。select a.*

JanLEE 491

【中亦安图】清算/报表/日终跑批程序之性能优化案例(5)

第一章技术人生系列 · 我和数据中心的故事(第五期)—清算/报表/日终跑批程序之性能优化案例(一) 中亦安图 | 2016-02-18 21:40 前言 不知不觉,技术人生系列·我和数...

coco3600的博客 399

清算/报表/日终跑批程序之性能优化案例(一)

清算/报表/日终跑批程序之性能优化案例(一)

跑批文件文本

文件跑批数据库中的储存过程,从而达到自动话的状态。

存储过程代码关于反跑批批量与日更新

CREATE OR REPLACE PACKAGE BODY PCKG_CIF_PROFIT_BATCH_2 AS   --日期   /*********************************************************************   *将交易确认流水表的的数据导入warehouse交易确认流水表中,跑全量!   ****************

lingbin418的专栏 1978

OpenWrt南京电信PPPoE IPv6配置:从零搭建稳定双栈网络

本文详细指导如何在南京电信PPPoE宽带环境下,为OpenWrt路由器配置稳定的IPv6双栈网络。核心在于正确设置WAN6接口为DHCPv6客户端,并请求/60前缀,同时配置LAN口分发地址并放行防火墙关键流量,确保内网设备获得原生IPv6连接。

water的专栏 1339

Hive SQL优化思路

Hive的优化主要分为:配置优化、SQL语句优化、任务优化等方案。其中在开发过程中主要涉及到的可能是SQL优化这块。 优化的核心思想是: 减少数据量(例如分区、列剪裁) 避免数据倾斜(例如加参数、Key打散) 避免全表扫描(例如on添加加上分区等) 减少job数(例如相同的on条件的join放在一起作为一个任务) HQL语句优化 1. 使用分区剪裁、列剪裁 在分区剪裁中,当使用外关联时,如果将副表的过滤条件写在Where后面,那么就会先全表关联,之后再过滤。

yuan_more的博客 1383

手把手教你为Multisim 14.0创建自定义元件:以SPICE模型导入为例

本文详细介绍了如何在Multisim 14.0中创建自定义元件,重点讲解了SPICE模型的导入与应用。通过系统性的步骤指南,包括元件符号设计、引脚定义、SPICE模型关联及验证测试,帮助工程师高效扩展元件库,满足特定设计需求。文章还提供了故障排除和性能优化的实用技巧,确保自定义元件在实际仿真中的可靠性。

weixin_42531163的博客 282

C# 基于NetStandard.Opc.Ua实现高效OPC UA数据订阅与同步读写

本文详细介绍了在C#中利用NetStandard.Opc.Ua库高效实现OPC UA数据订阅与同步读写的方法。通过实战代码演示了如何建立连接、配置订阅管理器、优化监控项分组,并对比了同步与异步读写的适用场景,帮助工业软件开发者构建稳定可靠的数据采集客户端,提升工业物联网应用开发效率。

weixin_29201859的博客 227

慢SQL优化的30个思路方案整理

对于一些特别大的表,单靠索引优化可能效果有限。这时,可以通过业务层面的优化来限制查询的时间范围,从而缩小查询范围,提高查询性能。以下是一些业务上可以采取的优化措施: 对大表进行时间范围分区(如按月、按季度),在查询时只针对相关时间段的分区进行查询,避免全表扫描。在业务层限制查询的时间窗口,如只允许查询最近一年的数据。对于超出时间窗口的查询,可以要求用户提供更具体的查询条件以缩小查询范围。 将历史数据定期归档到历史表或其他存储介质中,保持主表的数据量在一个合理范围内。查询时先在主表中查找,如果需要再到历史表中

发现问题,面对问题,分析问题,解决问题,总结问题 7365

为什么你的XGBoost多分类效果不如预期?可能是这5个参数没调对

本文深度剖析了XGBoost模型在处理多分类问题时效果不佳的五大关键参数陷阱。针对多分类问题的独特性,文章提供了max_depth、learning_rate、采样参数及正则化参数等核心参数的量化调整策略与诊断方法,帮助开发者精准调优,有效提升模型在各类别上的均衡性能与泛化能力。

weixin_29182481的博客 295

08 SQL优化

上一篇文章记录了索引的创建、使用、设计,除了索引方面还需要注意平日对于SQL的使用,对SQL进行优化;SQL的优化是建立在索引使用的基础上这篇笔记将从以下7个方面对SQL进行优化。

m0_46836425的博客 511

银河麒麟V10 SP3下NFS客户端挂载失败?5个常见问题排查与修复

本文针对银河麒麟V10 SP3系统中NFS客户端挂载失败的常见问题,提供了5个实战排查方案。从基础服务状态检查到防火墙配置、版本兼容性、/etc/fstab设置及权限映射,详细解析了问题根源与解决方案,帮助用户快速恢复NFS文件共享功能。

weixin_42525005的博客 358

保姆级教程:用Labelme标注车辆关键点,并一键转成YOLOv8-pose训练格式

本文提供了一份详细的车辆底盘关键点标注教程,从使用Labelme进行标注到一键转换为YOLOv8-pose训练格式的全流程指南。特别针对工业检测和自动驾驶场景,分享了标注规范、格式转换脚本及常见问题解决方案,帮助开发者高效准备训练数据并优化模型性能。

weixin_27419879的博客 306

GC 时间过长的优化一般思路

JVM 的调优首要任务就是缩短GC 时stop working 的时间。下面是GC分析、调优的一般思路。 发现分析的过程: 用户、运维反映、XX页面卡顿->前端人员分析页面代码没问题。->继续分析XX数据接口相应的时间太长 ->反映给后台开发->后台开发本地测试-> 相应时间正常-> 测试线上的接口-> 相应时间过长-> 分析一般系统日志->发现SQL查询时间正常、但是相关的业务代码执行时间过长。 此时怀疑GC时间过长导致程序停顿->通过在

m0_37163942的博客 7059

别再为CAD和GIS数据对不上而头疼了!一份完整的ArcGIS for AutoCAD坐标系定义与数据套合指南

本文详细介绍了如何通过ArcGIS for AutoCAD插件解决CAD与GIS数据坐标系不匹配的问题,实现数据的精准套合。文章从坐标系冲突分析、插件核心功能解析到五步标准化工作流,提供了完整的解决方案,帮助工程师和设计师提升跨平台协作效率。

weixin_42531886的博客 216

排查线上问题的一般解决思路

线上问题的排查和解决是运维和开发团队的一项关键任务。当系统遇到性能下降、功能异常、安全漏洞或稳定性问题时,快速定位并解决问题是保证系统正常运行的关键。本文将详细介绍排查线上问题的一般解决思路,帮助读者掌握排查和解决问题的技能。通过本文的详细介绍,您应对如何排查和解决线上问题有了全面的了解。我们讨论了问题分类、排查思路、工具和技术、具体案例分析和预防措施等方面。解决线上问题需要全面的分析和实践,不断探索和优化,才能构建高效、可靠的系统。

lssffy的博客 1803

一分钟教会你搭建steam新游幻兽帕鲁服务器

总结: 游戏对服务器搭建要求相对较高、且对服务器网络协议有要求不能封堵UDP、多开、游戏运行久、同时在线人数多了这些会很吃内存 我自己用的64G内存多开4区测试玩家同时在线50多人的情况下内存已经跑满了、对于想用服务器搭建联机的小伙伴建议根据开区数量以及玩家人数去选择配置、当然也可以直接找我阿杰购买、我可以提供技术搭建服务。注:如果用的是本地电脑局域网搭建直接输入127.0.0.1:8211就行 如果用的是服务器搭建输入自己服务器IP+端口或解析的域名+端口进入游戏。

用最简单的方式说最重要的事!服务器、存储、云计 算、A智能的大数据产品、游戏开发技术。致力于广 大开发者、政企用户、各项机构等,构建云上世界提供全方位云计算解决方案。旨在打造差异化的开放式闭环生态系统帮助用户快速构建稳定、安全的云计算环境。 2233

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

系统架构性能优化思路

这篇文章重点还是谈已经上线的业务系统后续出现性能问题后的问题诊断和优化重点。

伤心的辣条 911

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SQL Server数据迁移金仓性能优化实战:从慢SQL到系统瓶颈,一套组合拳打下来

摘要:数据库迁移后的性能优化指南 本文针对SQL Server迁移至金仓数据库后常见的性能下降问题,提出系统性优化方案。首先指出性能下降的主因是未适配金仓特性的SQL写法、索引缺失及配置不当。优化步骤应遵循"先定位后优化"原则,优先解决SQL和索引问题(占80%性能问题),再调整系统参数。重点介绍了金仓自带的性能诊断工具(KWR、KSH、KDDM)和慢SQL定位方法,详细解析执行计划分析要点,并给出索引优化五大原则和SQL改写三大技巧(避免索引列运算、子查询转JOIN、游标分页替代大偏移分页)。通过更新统计

优快云博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: SQL优化【基础07】 - 绑定变量窥视与自适应游标共享
下一篇: SQL优化【基础09】 - 查询转换(query transformation)
launch_225
博客等级 码龄18年 125粉丝 356原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值