Oracle 调整/分析表

标签 oracle performance

安排自动“分析表”的方法是什么。当大量数据通过插入和删除发生更改时,是否可以请求自动“分析表”?参数化自动分析表过程的方法是什么,即设置何时应该触发的规则。

最佳答案

您使用的是哪个版本的 Oracle?从 10.1 开始,Oracle 提供了一项自 Action 业,每晚收集任何对象的统计信息,这些对象自上次统计以来发生了重大变化(基于可能发生变化的内部算法,但我相信阈值约为 15%)聚集。假设您使用的是当前受支持的版本,默认情况下会自动收集统计信息,除非您明确禁用该作业。

您可以使用 DBMS_STATS 包根据事件收集对象的统计信息,您可以使用 DBMS_JOB(或 DBMS_SCHEDULER)包以异步完成。因此,在 ETL 过程结束时,您可以收集统计信息

BEGIN
  dbms_stats.gather_table_stats( 
    ownname => <<schema name>>,
    tabname => <<table name>> 
  );
END;

你可以让它异步运行

DECLARE
  l_jobno INTEGER;
BEGIN
  dbms_job.submit(
    l_jobno,
    'BEGIN dbms_stats.gather_table_stats( ''<<schema name>>'', ''<<table name>>'' ); END;',
    sysdate + interval '1' minute
  );
END;

关于Oracle 调整/分析表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1800124/

相关文章:

oracle - 仅当表中的数据更新时才重建 Informatica 持久缓存

c# - async/await 方法中的耗时任务

mysql - 如何提高此查询的性能?

javascript - PhoneGap 游戏、canvas 和慢 javascript

python - 寻找最大正值或最小负值的向量化版本

sql - 如何判断在 Oracle 事务中是否有未提交的工作?

Oracle 分页 : Analytic function ROW_NUMBER() VS ROWNUM

oracle - 不一致错误 ORA-01722 : invalid number

sql - 如何为现有表添加自动增量字段并用行的序列号填充它?

tomcat - 通过带有 Tomcat 实例的 Apache Web 服务器服务的多个域;一个网站很慢