• λ我爱Aspx >> C#.Net >> 用共享游标提升 SQL 性能
  • 用共享游标提升 SQL 性能

  • :aspxer  Դ:5iaspx  :2007-7-30 6:10:19  ؼ:sql
  • 动态视图

    下面的四个动态视图显示了绑定变量的信息:

    l GV$SQL_BIND_METADATA

    l V$SQL_BIND_METADATA

    l GV$SQL_BIND_DATA

    l V$SQL_BIND_DATA

    这些视图也包括了内部绑定变量的信息。内部绑定变量可以根据视图[G]V$SQL_BIND_DATA中的字段SHARED_FLAG2与用户绑定变量区分,内部绑定变量的标记值为256。

    只参看内部绑定变量的行,用户可以考虑下面的语句:

    SELECT * FROM V$SQL_BIND_DATA WHERE BITAND (SHARED_FLAG2, 256) =256

    主要利益与折衷

    考虑一个没有使用绑定变量的应用,该应用重复地使用相似语句,大多数的执行都将导致硬解析。

    一个不使用绑定变量的典型应用可能会有各种类型的语句:最优共享,非最优共享安和非共享。对于最优共享语句,共享游标明显是有好处;非共享语句不能共享同样的游标。

    对于非最优共享语句没有一个简单的答案:共享游标与获取最优计划的比较是硬解析的系统耗费与强制使用相同执行计划后的性能退化之间的折衷。因此,根据系统负载,应用特征,资源限制等,正确的答案是不同的。这也是Oracle 提供为cursor_sharing提供两个不同的值SIMILAR和FORCE,并把决定权留给用户的原因。SIMILAR是更保守的选择,它仅仅使最优可共享语句共享游标。采用FORCE,最优共享和非最优共享语句都被强制共享游标,结果便不可预测,因为游标可能被共享但执行计划的性能也降低了。因此,因为硬解析造成性能有非常大的影响并且非最优共享语句占非常大的百分比的情况下,使用FORCE是有意义的。另外一个考虑的方式是:在采用FORCE之前先尝试SIMILAR。

    当cursor_sharing采用相似语句共享游标的时候,硬解析转换为软解析。注意,由于判断语句相似性的附加成本,软解析比已使用绑定变量的应用的软解析(用绑定变量在内部替换文字标量)花费要昂贵一些。但是,完全保存在CPU内部,内存和锁竞争任然需要考虑。

    Ҷƪл˵?
  • һƪC#网络应用编程基础练习题与答案(六)
    һƪC#图像放大问题解决方法