WEB开发网
开发学院数据库Oracle Oracle数据库11g新特性:可管理性 阅读

Oracle数据库11g新特性:可管理性

 2008-12-16 13:01:12 来源:WEB开发网   
核心提示: STATUSCOUNT(1)--- --CLOSED 68857OK 6VALID1注意,包含 VALID 的行的个数降为 1.此时,Oracle数据库11g新特性:可管理性(9),查询不应采用全表扫描,而应使用索引,您可以确定它们对优化程序的影响,一个专用的参数可以使优化程序使用正在审核

STATUS  COUNT(1)
------- ----------
CLOSED    68857
OK        6
VALID      1

注意,包含 VALID 的行的个数降为 1.此时,查询不应采用全表扫描,而应使用索引。但是如果您运行查询并检查执行计划:

--------------------------------------------------------------------------
| Id | Operation     | Name | Rows | Bytes | Cost (%CPU)| Time   |
--------------------------------------------------------------------------
|  0 | SELECT STATEMENT |   | 68858 | 1075K|  290  (3)| 00:00:04 |
|* 1 | TABLE ACCESS FULL| RES | 68858 | 1075K|  290  (3)| 00:00:04 |
--------------------------------------------------------------------------

您将看到该查询仍然会进行全表扫描。原因在于统计信息没有更新(是旧的)。优化程序仍然认为包含值 VALID 的行的数目占大多数,因此会生成一个全表扫描计划。您可以重新生成统计信息,这样可以纠正优化程序之前想好的进程,转而使用索引。但是,这带来一个比较棘手的问题:这会破坏某些其他的查询吗?

先不要猜测,请使用提供的程序包 dbms_stats 中的 set_table_prefs 过程,将表 RES 的 PUBLISH 首选项更改为 false.然后照常收集该表的统计信息。由于现在统计信息正在审核中,优化程序不会使用它们。不过,您可以确定它们对优化程序的影响。一个专用的参数可以使优化程序使用正在审核的统计信息,而非已发布的信息。

SQL> alter session set optimizer_use_pending_statistics = true;

上一页  4 5 6 7 8 9 10  下一页

Tags:Oracle 数据库 特性

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