性能调优基础2:解析

  从性能调优的角度来看,理解解析的概念非常重要。解析是SQL执行的主要阶段。接下来是其他阶段:Execute和Fetch。

解析:基本知识

当一个SQL语句被执行时,Oracle引擎对它执行以下动作:

  1. 验证语法
  2. 验证语句中引用的对象
  3. 分配给执行作业的用户的特权
  4. 验证SQL语句在共享池中是否可用。Oracle引擎将计算SQL语句的哈希值并查找。
  5. 如果SQL语句不存在,则分配共享内存并在共享池中创建游标。
  6. 生成执行计划

解析的类型

硬解析(HARD PARSE)

  这意味着SQL语句在共享内存中不可用,或者这是一个用户试图执行的全新语句。如果您的共享池很小,那么也可能需要硬解析,因为旧语句已经在共享池中老化了。在这种情况下,需要完成上面提到的所有解析步骤。硬解析需要额外的系统资源。这也被称为“库缓存丢失”(Library Cache Miss)。

软解析(SOFT PARSE)

  这意味着SQL语句之前被执行过,并且已经被解析过,并且在内存中可用。所以Oracle只需要执行上面提到的步骤1-3,因为其余的任务已经在前面完成了。这就像努力一次,收获多次一样。这也被称为“库缓存命中”(Library cache Hit),因为您已经解析了语句并可以使用库缓存。

为什么应该避免硬解析

硬解析应该保持在最低限度的原因有两个:

  1. 生成执行计划是一项非常占用cpu的操作。
  2. 共享池中的内存是有限的,而且内存操作是序列化的。内存操作使用共享池锁进行,如果发生如此多的硬解析,那么数据库中的其他进程将不得不排队等待以获得共享池锁。因此,硬解析对共享池锁和库缓存锁的数量都有影响。

原文链接: Performance Tuning Basics 2 : Parsing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值