oracle - 无法并行运行收集统计信息?
问题描述
我们的数据库有一个包含数百万行的巨大表。我们需要收集其统计信息以改进优化器的基于成本的计划。为了更快地收集它,我们尝试对表使用并行性,将 table pref 'DEGREE' 设置为
DBMS_STATS.AUTO_DEGREE
此外,更改会话以启用并行 dml。但是当我们运行以下命令时,gather 并没有并行运行,而是在一个会话中完成。
dbms_stats.gather_table_stats(i_owner,i_table_name,estimate_percent => dbms_stats.auto_sample_size,no_invalidate => FALSE ,cascade => TRUE);
一些在线搜索建议删除 estimate_percent 参数,但没有帮助。有谁知道为什么它不并行运行?
相同的逻辑应用于另一个模式,但在那里一切正常。是否有任何特权可以让它发挥作用?用户已经拥有对 dbms_stat 的执行权限。
编辑:表有 1 个位图和 2 个普通索引。我读到不能并行收集位图索引,这可能是原因吗?即使是,它有2个正常索引,它们不应该并行收集吗?
解决方案
推荐阅读
- php - 如何从 mysql db react native 获取实时数据
- pycharm - pymongo v3.10,MongoClient 在 Windows 中使用“from pymongo import MongoClient”获取 pyCharm 错误“无法导入名称 'MongoClient”
- c# - 如何在派生类c#中使用接口中的受保护属性?
- c# - 无法在 UserControl 上设置子控件的 Name 属性
- javascript - Android webview onConsoleMessage 错误:Uncaught SyntaxError: Invalid or unexpected token
- r - 将手动图例添加到 ggplot
- 3dsmax - maxscript 的渲染问题
- swift - Swift:声明(和初始化)一个函数类型的变量
- java - Spring Cloud Data Flow Kinesis Demo 不工作
- python - 如何判断我使用的是 Mac 还是 iOS