我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQL调优的思路是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQL调优的思路是什么

本篇内容介绍了“SQL调优的思路是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一般来说,需要关注下面四种Top SQL

  • 消耗最多CPU的(逻辑IO过多)

  • 导致过多物理I/O的

  • 执行次数较频繁的

  • 执行时间较长的

我们知道,一个语句的响应时间有个很著名的公式:
响应时间=服务时间+等待时间
其中服务时间就是CPU为执行该语句花费的时间。
服务时间=分析时间+递归时间+执行时间
分析时间是CPU用于分析语句的时间,递归时间是CPU用于语句的递归SQL的时间,剩下的则就是CPU用于执行语句的真正时间了。
那么,上面的这些时间信息从哪里来的?Oracle提供的系统统计信息中就有部分的时间统计信息:

  • 服务时间=CPU used by this session

  • 分析时间=parse time cpu

  • 递归时间=recursive cpu usage

那么,执行时间就可以根据上面三个统计信息计算得出:
执行时间=CPU used by this session – parse time cpu – recursive cpu usage

  • 如果执行时间在整个响应时间中占较大的比例,那么下一步就是找出那些造成了最多逻辑IO的SQL语句,可以从statspack报告的SQL ordered by Gets部分找到。

  • 如果分析时间在整个响应时间中占较大的比例,那么下一步就是查找哪些SQL分析过多,这在statspack报告中在SQL ordered by Parse Calls中列出。

  • 如果等待时间在整个响应时间中占较大的比例,并且主要是块读取相关的等待时,下一步就是找出哪些SQL造成了过多的物理读,可以查看statspack报告中的SQL ordered by Reads部分。

那么,根据上面列出的一个简单的原则,我们需要关注三个关于CPU时间的统计信息: CPU used by this session, parse time cpu和recursive cpu usage,以及top5等待事件中和IO相关的等待时间。如果是其他的一些等待事件出现在Top5中,那么可能需要根据不同的等待事件来分析原因了。然后优先调优时间消耗最多的相关SQL。
除了上面的SQL ordered by Gets(逻辑IO最多),SQL ordered by Parse Calls(软解析过多),SQL ordered by Reads(物理IO过多),statspack还按照其他的一些方式列出了Top SQL,这些Top SQL在某些情况下都是需要给予特别关注的。比如:
  SQL ordered by Executions 执行次数超过100的
  SQL ordered by Sharable Memory 占用library cache超过1M的
  SQL ordered by Version Count 子cursor超过20的
如果没有statspack,那么根据v$sysstat/v$sesstat中的统计信息,结合v$sql/v$sqlarea,一样可以得到相关的SQL。
v$sql对于每一个子cursor都有一行统计记录,而v$sqlarea则对同一个父cursor只有一行统计记录,也就是v$sqlarea是对v$sql按照父cursor进行group by后的一个结果。这两个视图中都有诸如buffer_gets,parse_calls,disk_reads,,executions,sharable_mem等列,和报告列出Top SQL的条件对应。

“SQL调优的思路是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQL调优的思路是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sql中的@是什么意思

sql 中 @ 符号用于指定一个查询中可变的参数,对提高代码可读性、防止 sql 注入攻击、提高性能有帮助。语法:@parameter_name,其中 parameter_name 是参数的名称。SQL 中 @ 符号的含义在 SQL 中,
sql中的@是什么意思
2024-05-02

sql中‖是什么意思

sql 中的 | 运算符表示逻辑 or 运算,将两个布尔值连接起来,返回一个布尔值:如果两个操作数都是 true,结果为 true。如果两个操作数都是 false,结果为 false。如果一个操作数为 true,另一个为 false,结果为
sql中‖是什么意思
2024-04-29

sql中$是什么意思

sql 中 $ 符号表示参数占位符,它被替换为查询中要使用的实际值。$ 符号可提高查询的可读性、可重用性和安全性。SQL 中 $ 的含义在 SQL 中,$ 符号指的是一个参数占位符,它表示查询中要替换为实际值的变量。如何使用 $使用
sql中$是什么意思
2024-05-02

sql中!=是什么意思

sql查询中,!=运算符表示"不等于",比较两个表达式,若结果不同则为true,若结果相同则为false。语法:expression1 != expression2。如:select * from customers where age !
sql中!=是什么意思
2024-05-02

sql express是什么意思

microsoft sql express 是一款免费且轻量级的数据库管理系统,适用于小型业务、开发人员和个人用户。其特点包括:免费使用和分发小巧且轻量级易于安装和使用适用于小型工作负载与完整版 sql server 兼容SQL Expre
sql express是什么意思
2024-06-12

sql中:是什么意思

sql 中 count(*) 的含义在 SQL 中,COUNT(*) 函数用于计算表中记录的数量。它是一个聚合函数,可以应用于任何表或查询,无论其结构或内容如何。注意: COUNT(*) 与 COUNT(column) 不同,后者只计算
sql中:是什么意思
2024-06-12

sql dbo是什么意思

dbo是sql server中的数据库拥有者,具有对数据库的最高权限,包括创建、修改数据库对象,授予、撤销权限,以及备份、恢复数据库。通常不建议将dbo用于日常数据库操作,而是创建具有有限权限的新用户进行特定任务。不过,在安装或升级sql
sql dbo是什么意思
2024-06-12

sql是什么意思啊

sql是一种用于操作关系数据库的编程语言,它允许用户通过使用特定的命令来查询、插入、更新和删除数据库中的数据。它是用于访问和操作关系数据库的标准语言,它由一组SQL命令组成,这些命令可以用于执行各种数据库操作。它不仅用于数据的查询和操作,还
sql是什么意思啊
2023-12-20

sql中^是什么意思

sql中的^符号代表按位异或运算,用于比较两个二进制位并返回一个新位。规则为:0 ^ 0 = 0,0 ^ 1 = 1,1 ^ 0 = 1,1 ^ 1 = 0。用途包括:设置或取消标志位,比较值,以及简单的加密和解密。SQL 中 ^ 的含义
sql中^是什么意思
2024-04-28

sql中:=是什么意思

在 sql 中,":=" 赋值运算符用于将表达式的结果存储在指定的变量中。它将等号右侧表达式的值立即赋给等号左侧的变量。此外,:= 在任何 sql 语句(如存储过程)中可用,是 set 语句的一个别名,但不能为列或表赋值。SQL 中的 :=
sql中:=是什么意思
2024-05-02

sql中的coalesce是什么意思

coalesce 函数返回一个列表中第一个非空值的表达式。它的语法为 coalesce(expression1, expression2, ..., expressionn),参数为要检查是否为 null 的表达式。返回值为列表中第一个非空
sql中的coalesce是什么意思
2024-05-07

sql中的sum是什么意思

sql中的sum函数是用于计算指定列中非空值的和的聚合函数,它可以通过sum(column_name)的语法使用。通过汇总大量数据,识别趋势和进行比较,sum函数简化了数据分析并提供了有价值的见解,但仅计算非空值,最适合数值类型,并且对于大
sql中的sum是什么意思
2024-05-09

sql中的char是什么意思

char 是 sql 中的字符字符串类型,具有固定长度,无论存储实际字符的数量,都会填充到指定长度。它用于存储特定长度的数据,确保对齐和防止数据不一致。CHAR 在 SQL 中的含义CHAR 是 SQL 中的数据类型,用于存储固定长度的字
sql中的char是什么意思
2024-05-09

sql中的like是什么意思

sql 中的 like 运算符用于寻找匹配特定模式的值,它使用通配符 %(匹配任意字符)和 _(匹配单个字符)。like 运算符通常与 where 子句结合使用,用于过滤表中的行,注意它区分大小写,且通配符只能在模式开头或结尾使用。SQL
sql中的like是什么意思
2024-05-02

sql中的mod是什么意思

sql 中的 mod 是计算余数的运算符。用法:mod(x, y),其中 x 是被除数,y 是除数。返回 x 除以 y 后的余数,结果始终是非负数。应用场景包括计算星期几、检查奇偶性,以及检测是否为某个数字的倍数。SQL 中的 MOD 是什
sql中的mod是什么意思
2024-05-02

编程热搜

目录