关于实时统计oracle 19c仅适用于特定表
Reg Real-Time statistics,它扩展了在线统计数据收集(12c),还包括传统的DML语句。 实时统计信息有助于优化器生成更优化的计划。大容量装载操作收集所有必要的统计信息,而实时统计信息会增强而不是取代传统的统计信息 Oracle引入了新参数关于实时统计oracle 19c仅适用于特定表,oracle,performance-testing,query-performance,database-administration,oracle19c,Oracle,Performance Testing,Query Performance,Database Administration,Oracle19c,Reg Real-Time statistics,它扩展了在线统计数据收集(12c),还包括传统的DML语句。 实时统计信息有助于优化器生成更优化的计划。大容量装载操作收集所有必要的统计信息,而实时统计信息会增强而不是取代传统的统计信息 Oracle引入了新参数 \u optimizer\u在常规\u dml上收集\u统计信息\u和\u optimizer\u在常规\u dml上使用\u统计信息\u,默认情况下为true,并且 \u优化器\u统计数据\u常规\u dml\u采样率\u为100%
\u optimizer\u在常规\u dml上收集\u统计信息\u
和\u optimizer\u在常规\u dml上使用\u统计信息\u
,默认情况下为true,并且
\u优化器\u统计数据\u常规\u dml\u采样率\u
为100%
实时统计是如何工作的
默认情况下,dml上的\u optimizer\u gather\u stats\u是真的,因此它会自动启动
当DML操作当前正在修改表(常规)时,如果启用上述参数,Oracle数据库将动态计算最基本统计信息的值
考虑一个表的例子,该表有很多插入项,并且行数在增加。实时统计信息跟踪插入行时增加的行数。如果优化器对新查询执行硬解析,那么优化器可以使用实时统计信息获得更准确的成本估算
USER\u TAB\u COL\u STATISTICS
和USER\u TAB\u STATISTICS
有列注释,说明使用了实时统计信息。“常规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
加载表常规
和优化器统计数据收集
是添加到此新功能的解释计划中的新参数
我们能否只对一组特定的表应用实时统计数据?如果是,如何进行
我们知道,获取超过10万行的任何dml操作的实时统计数据是非常昂贵的操作
我试图找到方法,但没有成功动态统计和实时统计是不同的
请注意,优化器统计信息收集
实际上是一个12.1执行计划操作,根据
. 看起来12.1在线统计功能在19c中针对Exadata进行了修改,并重命名为实时统计
实时统计信息仅在Exadata上可用,根据:您不能在常规Enterprise Edition数据库上使用实时统计信息
你们有可用的Exadata系统吗?如果没有,您无法测试此功能。即使我没有exadata系统可用,我们也可以使用alter system set“\u exadata\u feature\u on”=true scope=spfile代码>。这里我的问题是我们是否可以只对单个表使用实时统计数据,我不想对我的整个数据库模式实现这一点,可以用这个未记录的参数测试Exadata特性。一些与12.1相关的新功能可能在19版本中被重命名和修改。然而,根据文档,实时统计是一种自动功能。有一个提示NO_GATHER\u OPTIMIZER\u STATISTICS
可以在特定查询中禁用它,但我没有发现任何在查询或表级别启用它的提示,也没有在表级别启用它的DBMS\u STATS功能。我已经修改了关于在线统计和实时统计功能的回答。是的,我也找到了相同的提示,但在生产环境中,我们有1000个表,我们无法使用此提示手动修改所有表的插入、删除、更新查询NO\u GATHER\u OPTIMIZER\u STATISTICS
。那么,是否有其他方式可以提及表名,以便仅对这些表应用此新功能如果此Exadata功能确实存在生产问题,则应与Oracle支持部门合作。如果您想使用未记录的参数,您甚至应该更多地使用Oracle支持(未经Oracle支持部门同意,您不应该在生产中使用未记录的参数,否则您的系统可能不受Oracle支持)。对不起,我再也帮不上忙了。