database - MVIEW 快速刷新总是在递增之前从主表执行选择计数(*)
问题描述
Oracle 版本:Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
目前有一个 mview 刷新问题,其中一个小的 mview 日志需要很长时间才能添加到 mview,因为select count(*) from [table]
它每次启动时都会执行。
- 按需 mview 快速刷新是通过预定的 Oracle 作业触发的
- 当前设置 (
dbms_mview_stats.set_mvref_stats_params
) 是 TYPICAL,保留 365 天。 - mview 刷新本身需要 20 秒以下,count(*) 是问题
经过进一步检查,我注意到该表USER_MVREF_CHANGE_STATS
的 NUM_ROWS 列填充了上述行数,我认为这些行数来自select count(*)
每次发生的情况。我们还注意到和中DBA_MVREF_STATS
包含值。INITIAL_NUM_ROWS
FINAL_NUM_ROWS
我们的想法是将这种刷新恢复到它应该花费的时间,即大约 30 秒与现在的 1-2 小时。
知道为什么会发生这种情况以及如何解决吗?我怎样才能阻止这种select count(*)
情况发生?
解决方案
推荐阅读
- python - 仅为前 4 个分隔符拆分 csv 文件,然后将其余部分删除为该行
- python - 如何计算边缘的均值和标准偏差(OpenCV 中的 Canny 边缘检测)
- bash - 如何计算用户提出的拉取请求数量?
- java - 解组重新运行重复的空值
- c - 有没有办法让用户在 C 中选择用于文件处理的驱动器号?
- svelte - Rollup 不会从 Svelte 编译 HTML
- viewmodel - 如何在 TornadoFX 中正确地将 ViewModel 传递给另一个组件?
- python - 根据条件将数据框列添加到列表中,如果它是 1,那么它应该在列表中,否则不在
- spring-boot - http post data:端点json解析丢失的kotlin数据类字段的默认值
- java - 在 Netbeans 中将 javadoc 附加到库的 .jar