暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 物联网性能

ASKTOM 2020-05-12
167

问题描述

你好团队

我们有1.5Bil行的索引组织表。我们从不删除或更新此表中的任何行。仅插入。环境是DW而不是OLTP。

表有2列。第一列是varchar2(130) 是主键。在所有搜索中都使用此列。
第二列是数字,并从该IOT表上的触发器中获取从序列生成的数字。第二列也有索引。(我们从不在此专栏上搜索)

我们怀疑插入在特定情况下是缓慢的,从30k行的20分钟到30k行的60分钟,同一天。有可能多个作业将行插入到该表中。

我们决定在这张表上做家务,只保留所需的行。家务后,行数将少于1亿。

您认为减小表的大小将有助于提高性能吗?

第二个问题是,作为客房整理的一部分,我们将创建具有1亿行的新IOT,并删除现有IOT并将new重命名为old IOT名称。这是理想的解决方案吗?

非常感谢您的支持。

专家解答

Do you think reducing table size will be help to gain performance?

也许吧?

这取决于为什么插入速度很慢!这可能是其他一些潜在问题的症状。

在跳进去之前,分析为什么当前的插入速度很慢。通过跟踪执行来执行此操作:

exec SYS.dbms_monitor.session_trace_enable ( waits => true, binds => true );

... run you process ...
  
exec SYS.dbms_monitor.session_trace_disable ();
复制


您也可以从另一个会话开始跟踪-在要跟踪的会话的sid和序列号中传递。然后查看生成的跟踪文件。这将帮助您确定问题所在。

如果您不确定这意味着什么,请在此处的 (TKPROF格式) 文件中发布计划和等待。

2nd question is, as part of housekeeping we will create new IOT with 100Mil rows and drop existing IOT and rename new to old IOT name. Is this ideal solution?

如果你的意思是 “这是从巨大的表中删除大部分行的最佳方式”,那么是的; 创建表即选择,然后切换表是最快的方法之一。我在以下位置讨论其他选项:

https://blogs.oracle.com/sql/how-to-delete-millions-of-rows-fast-with-sql
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论