![]() |
1
4
将数据和索引分隔成单独的表空间并没有好处,除了可能使DBA更容易地将相似的对象分组在一起之外。长期以来一直存在这样一个误区,即将索引和数据分离对于性能是有益的——这是不正确的。 临时对象应该(并且必须)存储在临时表空间中。您可以增加临时表空间的大小,或者为拥有这些对象的用户创建一个单独的临时表空间,如果您想将这些大型临时表分隔成单独的表空间的话。您不能(也不想)将它们存储在永久表空间中。 不过,从架构上讲,我很好奇为什么临时表在您的系统中是必需的。如果有会话将10的GB写入临时表中,那么为了在其他地方写入数据,我可能会怀疑存在更有效的解决方案。在Oracle中,甚至很少需要临时表——在其他数据库中更常见的情况是,在这些数据库中,读者可以阻止编写器在处理数据之前需要从表中复制数据。甲骨文没有这样的限制。 |
![]() |
2
1
我认为你的描述中没有什么让GTT不吸引人的。显然,您需要非常大的临时表空间,但总体上不会占用更多的空间,除非您大量使用表压缩(GTT中至少有10gr2不可用)。研究表空间组的使用: http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/tspaces.htm#ADMIN01103
另外,不要忽略子查询factoring子句的使用。它们通常可以替换临时表的使用。然而,它们可能仍然需要同样多的临时存储空间,因为来自sqfc的大型结果集可能会溢出到磁盘,以避免消耗过多的内存,因此您仍然需要继续增加临时空间。它们非常方便,不必每次需要新的临时表时都部署新的数据库对象。 |
![]() |
3
0
我查看了一个大型的全球临时表,以进行迁移练习。它起作用了,但为了调试和拒绝Hadling,我最终使用了普通的表。 如果GTT不起作用,请考虑行级安全性/vpd(甚至视图)。 您可以从sys_context(“userenv”,“sessionid”)派生一列,并使用该列确保用户只能看到自己的数据。 不过,想到多个会话同时处理多个千兆字节的数据集还是有点可怕。 我相信对于通过过程使用的GTT,使用会话用户的临时表空间,而不是过程所有者的临时表空间。如果您可以作为单独的Oracle用户获得会话,那么您就有机会将文件IO分布在不同的表空间上。 |
![]() |
blogger13 · 视频租赁店数据库的规范化 4 月前 |
![]() |
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 5 月前 |
![]() |
relatively_random · 确保两个表之间一致的共同参考 6 月前 |
|
Grenish Rai · Firestore错误“用户文档不存在” 9 月前 |
![]() |
Saijo-Shi · PLpgsql中的更新触发器 9 月前 |
![]() |
Dante · Django::配置不当:池不支持持久连接 10 月前 |
![]() |
YouLocalRUser · 删除重复行,保留第一行 11 月前 |