Reg实时统计信息,它扩展了在线统计信息的收集(12c),还包括常规的DML语句。实时统计信息可帮助优化器生成更优化的计划。而大容量装载操作会收集所有必要的统计信息,而实时统计信息则会增加而不是取代传统统计信息。
Oracle引入了新参数
_optimizer_gather_stats_on_conventional_dml
和_optimizer_use_stats_on_conventional_dml
,默认情况下为true,_optimizer_stats_on_conventional_dml_sample_rate
at 100%
实时统计如何工作?
默认情况下,_optimizer_gather_stats_on_conventional_dml
为true,因此它会自动启动
[当DML操作当前正在修改表(常规)时,如果启用了以上参数,则Oracle数据库将动态计算最基本统计信息的值。
考虑一个示例,该示例具有大量插入,并且行正在增加。当插入行时,实时统计信息会跟踪不断增加的行数。如果优化器对新查询执行硬解析,则优化器可以使用实时统计信息来获得更准确的成本估算。
[USER_TAB_COL_STATISTICS
和USER_TAB_STATISITICS
]的列注说明已使用实时统计信息。 “ STATS_ON_CONVENTIONAL_DML”。
执行计划显示
|Id| Operation | Name|Rows|Bytes|Cost (%CPU)|Time| Pstart|Pstop|
---------------------------------------------------------------------------------------
| 0| INSERT STATEMENT | | | |910 (100)| | | |
| 1| LOAD TABLE CONVENTIONAL |SALES| | | | | | |
| 2| OPTIMIZER STATISTICS GATHERING | |918K| 25M|910 (2)|00:00:01| | |
| 3| PARTITION RANGE ALL | |918K| 25M|910 (2)|00:00:01| 1 | 28 |
| 4| TABLE ACCESS FULL |SALES|918K| 25M|910 (2)|00:00:01| 1 | 28 |
Also the explain plan in the query used will tell in note section
Note
-----
- dynamic statistics used: stats for conventional DML
[LOAD TABLE CONVENTIONAL
和OPTIMIZER STATISTICS GATHERING
是已添加到此新功能说明计划的新参数。
我的问题是,我们可以仅对特定的一组表应用实时统计信息吗?如果可以,我们如何实现它们? ,因为我们知道要获取发生的任何dml操作的实时统计数据的行数超过数十万,这是非常昂贵的操作
我试图找出方法,但是没有成功
动态统计信息和实时统计信息不同。
根据licensing guide,仅在Exadata上提供实时统计信息:您不能在常规Entreprise Edition数据库上获得实时统计信息。
您是否有可用的Exadata系统?如果否,则无法测试此功能。