Oracle硬解析和软解析的区别分析
发布网友
发布时间:2022-04-11 23:45
我来回答
共1个回答
热心网友
时间:2022-04-12 01:14
1、硬解析即整个SQL语句的执行需要完完全全的解析,生成执行计划。
硬解析过程:
1.语法、语义及权限检查;
2.查询转换(通过应用各种不同的转换技巧,会生成语义上等同的新的SQL语句,如count(1)会转为count(*));
3.根据统计信息生成执行计划(找出成本最低的路径,这一步比较耗时);
4.将游标信息(执行计划)保存到库缓存。
2、软解析过程:
1.语法、语义及权限检查;
2.将整条SQL hash后从库缓存中执行计划。
软解析对比硬解析省了三个步骤。
3、总结:
1.尽可能的避免硬解析,因为硬解析需要更多的CPU资源,闩等。
2.cursor_sharing参数应权衡利弊,需要考虑使用similar与force带来的影响。
3.尽可能的使用绑定变量来避免硬解析。