【问题标题】:oracle pl/sql loading large data into temp tableoracle pl/sql 将大数据加载到临时表中
【发布时间】:2013-03-29 20:30:20
【问题描述】:

我有一个用例,其中大量数据有时会添加一百万行到临时表(会话全局临时表)中,并且该表要连接到另一个表以生成结果/图形/热图。数据是文本文件或可能来自命名管道/流/套接字。 SQLLDR 不是一个选项,因为它是一个临时表。

您对如何有效地做到这一点有什么建议吗?目前 SQL 语句如下所示:

insert into tempipdata (IP)
select gutils.ip2long('100.0.59.165') FROM DUAL UNION
select gutils.ip2long('100.1.117.161') FROM DUAL UNION
select gutils.ip2long('100.23.117.161') FROM DUAL;

任何建议。我可以从程序输出的套接字或标准输入中获取 IP 地址数据。

谢谢 维杰

【问题讨论】:

  • 你为什么不选择 Oracle 的嵌套表呢?创建、填充和删除大型临时表可能会使您的表空间碎片化。
  • @Rachcha - 将一百万行插入 PL/SQL 集合可能会给 PGA 带来巨大压力。有时临时表是正确的解决方案。

标签: performance oracle temp-tables


【解决方案1】:

要从操作系统文件访问数据,最好的解决方案是外部表。这些就像普通表一样,只有数据来自 CSV(或其他)文件。所以我们可以对它们使用 SQL。这是比临时表更好的解决方案,因为您不必先加载数据:您可以立即选择它。 Find out more.

【讨论】:

  • 嗯.. 外部表不是一个好主意。至少有一个 DB->App->Web 服务的 3-trie 系统是这样托管的。输入/上传他们的数据(在这种情况下为 IP 地址)的用户将不得不在与数据库相同的系统上执行此操作 - 通常我不认为这是可扩展的。一旦连接查询完成并绘制图形/绘图/热图,数据就不需要或有用。所以它非常适合基于临时会话的表标准。
  • 我认为我应该将临时表限制为大约 100,000 行,并将用户的大型查询分成三个工作人员,并使用我的 Appserver 组合结果并开发绘图/图形/等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 2011-01-13
  • 1970-01-01
相关资源
最近更新 更多