发布日期:2022-04-14 09:04:22点击次数:次
在Oracle数据库中有一块区域被称为共享池(Shared Pool),它用于存放缓冲程序数据。已执行过的每一条SQL语句在共享池中都存有解析后的内容,存储这些语句的地方叫高速缓存(Library Cache)。因为内存区域是有限的,所以不能将所有解析后的语句都一直保存,Oracle采用近而少使用原则(LRU,Least Recently Used)来管理共享池中的对象,只保留那些使用频繁且近使用的语句。
每当Oracle执行一条语句时,首先会进行语法检查(Syntax Check)和语义检查(Semantic Check)。如果这些都通过,就会对SQL语句进行解析(Parse),具体做法是利用内部的哈希算法来取得该SQL的哈希值,检查高速缓存里是否存在该值。如果能成功在高速缓存中找到,就将利用已有的解析树(Parse Tree)与执行计划(Execution Plan),省略优化器的相关工作,这种解析被称为软解析(Soft Parse);反之,Oracle将执行创建解析树、生成执行计划的工作,并将其放入高速缓存以待重用,这种方式称为硬解析。
硬解析通过优化器创建较优的执行计划时,会根据数据字典中对象的统计信息计算多个执行计划的代价,从而得到一个优解。这一步涉及大量的计算,会消耗非常多的CPU资源。所以我们在做性能调优时,要尽可能使用软解析,避免硬解析的执行。项目组在改进程序时,倡导功能相同的程序尽量保持一致性,多使用绑定变量,即将变量的数据通过一定的数据访问技术来和相应的实体捆绑在一起,使之成为一个整体。
小编主要讲了Oracle数据库中SQL解析性能调优的原理和方法,希望能给各位开发测试人员带来帮助。
•西安it培训中oracle数据库调优场景2022-04-14