WEB开发网
开发学院数据库Oracle Oracle数据库11g新特性:自适应游标与SQL计划管理... 阅读

Oracle数据库11g新特性:自适应游标与SQL计划管理

 2008-12-16 13:03:23 来源:WEB开发网   
核心提示: 之前显示的示例查询可以很好地表现这一点,数据库将基于绑定变量的值使用正确的优化程序方案,Oracle数据库11g新特性:自适应游标与SQL计划管理(5),您不需要执行任何操作;上述操作将自动执行,字典视图 V$SQL 已经修改,而 Bind-Aware 游标是实际更改计划的游标,一个新视图

之前显示的示例查询可以很好地表现这一点。数据库将基于绑定变量的值使用正确的优化程序方案。您不需要执行任何操作;上述操作将自动执行。

字典视图 V$SQL 已经修改,添加了两列:IS_BIND_SENSITIVE 和 IS_BIND_AWARE.让我们看一看它们的使用方法:

select is_bind_sensitive, is_bind_aware, sql_id, child_number
from v$sql
where sql_text = 'select count(1) from customers where state_code = :state_code and times_purchased > 3'
I I SQL_ID    CHILD_NUMBER
- - ------------- ------------
Y Y 7cv5271zx2ttg      0
Y N 7cv5271zx2ttg      1

让我们看一看这些列的含义。Oracle 对游标进行观察,并确定值变化的方式。如果不同的值可能会改变计划,则游标标记为 "Bind-Sensitive",IS_BIND_SENSITIVE 列显示 "Y".在几次执行后,数据库对游标和值有了更多了解,并确定游标是否应根据值的变化来改变计划。如果情况如此,则游标被称为 "Bind-Aware",IS_BIND_AWARE 列显示 "Y".总结:Bind-Sensitive 游标是可能会更改计划的游标,而 Bind-Aware 游标是实际更改计划的游标。

一个新视图 V$SQL_CS_HISTOGRAM 显示了 SQL 语句执行的次数,为每个子游标划分了三个存储区,如下所示:

select * from v$sql_cs_histogram
where sql_id = '7cv5271zx2ttg'
/
ADDRESS HASH_VALUE SQL_ID    CHILD_NUMBER BUCKET_ID   COUNT
-------- ---------- ------------- ------------ ---------- ----------
45C8218C 2144429871 7cv5271zx2ttg      5     0     0
45C8218C 2144429871 7cv5271zx2ttg      5     1     2
45C8218C 2144429871 7cv5271zx2ttg      5     2     0
45C8218C 2144429871 7cv5271zx2ttg      4     0     8
... and so on ...
45C8218C 2144429871 7cv5271zx2ttg      0     2     0

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Oracle 数据库 特性

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接