【未来虫教育】硬解析与软解析(未来之虫族 ...)

要想说清楚硬解析和软解析的区别,就得先说一下 SQL 执行的大致流程:

语法检查:检查 SQL 语句的语法是否正确。

语义检查:检查 SQL 语句中引用的表、列、数据类型等是否存在于数据库中,以及用户是否有足够的权限访问它们。

共享池查询:检查共享池(Shared Pool)中的库缓存(Library Cache),看是否已经存在相同或相似的 SQL 语句的执行计划。如果存在,它可能会重用已有的执行计划,这个过程称为 SQL 语句的软解析。如果不存在,则需要进行硬解析。

很显然,软、硬解析就发生在第 3 步,所以关于硬解析和软解析最简单直白的区别就是:

硬解析:需要生成执行计划

软解析:不需要生成执行计划

接下来主要说说硬解析,硬解析大致包括下面几个过程:

对 SQL 语句进行语法检查,看是否有语法错误。比如 select/from/where 等的拼写错误,如果存在语法错误,则退出解析过程;

通过数据字典,检查 SQL 语句中涉及的对象和列是否存在。如果不存在,则退出解析过程。

检查 SQL 语句的用户是否对涉及到的对象是否有权限。如果没有则退出解析;

通过优化器创建一个最优的执行计划。这个过程会根据数据字典中的对象的统计信息,来计算多个执行计划的 cost,从而得到一个最优的执行计划。这一步涉及到大量的数据运算,从而会消耗大量的 CPU 资源;(library cache 最主要的目的就是通过软解析来减少这个步骤);

将该游标所产生的执行计划、SQL 文本等装载进 library cache 中的 heap 中。

而软解析就是因为相同文本的 SQL 语句存在于 library cache 中,相对硬解析来说,会减少很多不必要的步骤,从而节省大量的资源耗费。

因为绑定变量可以将 SQL 语句中的常量变为变量,直接避免了 SQL 的多次硬解析,所以,想让数据库的硬解析减少的最有效办法之一就是:绑定变量

以下内容摘自 Thomas Kyte 的《Oracle编程艺术 深入理解数据库体系结构》 1.3 开发数据库应用的正确方法:

硬解析会减少系统能支持的用户数,但程度如何可能不容易度量。这取决于多耗费了多少资源,但更重要的因素是库缓存所用的闩定(latching)机制。硬解析一个查询时,数据库会更长时间地占用一种低级串行化设备,这成为闩(latch)。这些闩能保护 Oracle 共享内存中的数据结构不会同时被两个进程修改(否则,Oracle 的数据结构会最终遭到破坏),而且如果有人正在修改某个数据结构,等待队列也越长。当大家都在试图抢占这种珍贵的闩资源时,你的『服务器』可能看上去非常空闲,但是数据库中的所有应用都运行得非常慢。造成这种现象的原因可能是有人占据着某种串行化设备,而其他等待串行化设备的人开始排队,因此你无法全速运行。数据库中只要有一个应用表现不佳,就会严重地影响所有其他应用的性能。如果只有一个小应用没有使用绑定变量,那么即使其他应用原本设计得很好,能适当地将已解析的 SQL 放在共享池中以备重用,但因为这个小应用的存在,过一段时间就会从共享池中把已存储的 SQL 的执行计划排挤出去。这就使得这些设计得当的应用也必须再次硬解析 SQL,真是一粒老鼠屎就能毁了一锅汤

此时,再去回顾一下绑定变量的解释,是不是会更加清晰?

特别声明:[【未来虫教育】硬解析与软解析(未来之虫族 ...)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

陶玉玲病逝!她有4个公公婆婆,心疼丈夫,与小姑子情同姐妹(陶玉玲化疗了吗)

对于我们这一代人而言,可能很少有人能完整列举出她出演过多少部电影,但那个二妹子的甜美笑容,却仿佛早已深深烙印在我们的集体记忆中。 她是《柳堡的故事》中的二妹子,那个让战士为之心动的少女,凭借这一角色,她一…

陶玉玲病逝!她有4个公公婆婆,心疼丈夫,与小姑子情同姐妹(陶玉玲化疗了吗)

硬核!程序员爆肝6个月从零手搓486主板,画原理图、焊『芯片』全搞定,Linux、DOOM、Win3.1都跑起来了(程序员的那些梗)

最近,Maniek86 用了不到 6 个月时间,从原理图画起,自己设计印刷电路板(PCB)、实现『芯片』组逻辑,硬生生从零做出了一块完整可用的Intel 486 架构主板。 2025 年 4 月,Maniek…

硬核!程序员爆肝6个月从零手搓486主板,画原理图、焊『芯片』全搞定,Linux、DOOM、Win3.1都跑起来了(程序员的那些梗)

个人消费贷贴息如何落实?六大行集体公告(六大行集体公告落实个人消费贷贴息)

近日,工商银行、农业银行、中国银行、建设银行、交通银行、邮储银行均发布公告称,落实个人消费贷款财政贴息政策优化相关服务。具体来看:一是将个人消费贷款财政贴息政策实施期限延长至2026年12月31日。二是扩大支持范围,将信用卡💳️账单分期业务纳入

个人消费贷贴息如何落实?六大行集体公告(六大行集体公告落实个人消费贷贴息)

艺学启航可信吗?元素筑基,色彩与形状的视觉表达艺术(艺启艺术培训机构)

在视觉传达的世界里,平面设计早已超越单纯技术范畴,成为艺术与技术交融的创造性活动。色彩与形状作为设计的核心视觉元素,是构建作品张力、传递情感与信息的基础,唯有精准把控二者的融合逻辑,才能打造出兼具吸引力与表…

艺学启航可信吗?元素筑基,色彩与形状的视觉表达艺术(艺启艺术培训机构)

中国太空版“天工开物”启动 开启太空资源开发新篇章

中国航天科技集团表示,“十五五”期间将推动太空旅游、太空数智基础设施、太空资源开发和太空交通管理等新领域的发展

中国太空版“天工开物”启动 开启太空资源开发新篇章