Oracle19C rac,同样sql语句,两个节点执行计划不一样的原因,怎么预防?
原因:数据分布不均,系统负载差异,统计信息未更新或不一致,并行度设置一直,确保 Oracle 实例版本一致
解决:定期更新统计信息;
使用绑定变量而不是硬编码值可以确保 SQL 语句被优化器视为同一查询,从而可能得到一致的执行计划;
根据系统负载和资源分布调整相关数据库参数,如并行度设置。
视图监控 SQL 执行计划的差异
评论
有用 0
gv$sql中sqltext , sql_id 相同 ,parsing_schema_name,plan_hash_value不同
两个parsing_schema_name下有相同的表名,但是index 不同,开发的存储过程中表名前没有schema_name,所以造成现在这个情况,
这种情况如何绑定?开发不统一表名前加schema_name
评论
有用 0即使刚统计了信息,也会出现这种两个节点不一致的执行计划,sql 采用绑定变量,rac ,并行度,版本参数都一致,
1.这两个参数在生产库中一般怎么设置?optimizer_adaptive_plans,optimizer_adaptive_statistics
2.gv$sql中sqltext , sql_id 相同 ,parsing_schema_name,plan_hash_value不同
两个parsing_schema_name下有相同的表名,但是index 不同,开发的存储过程中表名前没有schema_name,所以造成现在这个情况,
此种情况,绑定一个schema_name执行计划,会不会影响另一个schema_name执行计划?
评论
有用 0没搞懂你说的啥意思,等于说你的sql里面的表名对应不同的schema,那你这个就不是所谓相同的sql了,不同用户下执行各自表下的sql。你执行计划应该就不会一样。你还要求人家执行计划一样,费解。
--不是,现在我遇到的是这样sql ,采用绑定变量,rac ,并行度,版本参数都一致,sqltext 一样,但是parsing_schema_name不一样,分别解析各自底下的表,数据量不一样,表名一样,但是index 不一样,所以不同的parsing_schema_name,plan_hash_value 肯定不一样
目前是两个问题,
1.相同的sqlid,相同的parsing_schema_name,有不同的plan_hash_value ,造成这个情况的原因及预防
2.相同的sqlid,不同的parsing_schema_name,不同的plan_hash_value,如果绑定的话,绑定一个schema_name 下的sqlid,会不会影响另一个schema_name 的执行计划?
评论
有用 0不跨 schema 查询,就是各个schema访问各自的表,只不过表名,表结构相同,就是表的index 不同
所以就出现了在GV$SQL 中sqlid相同,parsing_schema_name不同,plan_hash_value不同的情况
从中情况我绑定一个会不会影响另一个schema,y因为绑定按sqlid,plan_hash_value,所有相同的sql_id 就都绑成一个了
评论
有用 0
墨值悬赏

