首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle +压缩+临时空间使用

Oracle +压缩+临时空间使用
EN

Stack Overflow用户
提问于 2014-02-07 14:20:56
回答 1查看 554关注 0票数 1

我有一个Oracle SQL查询,它在"GROUP“操作期间消耗大量的临时空间。基础表有200亿条记录(18 GB)。我计划压缩那个表,看看它是否有助于减少它所占用的临时空间。我怀疑可能不是,但有人经历过吗?

提前谢谢..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-01 03:16:20

基本表压缩不会减少临时表空间的使用。很难证明什么是不存在的,以下是我的理由:

  1. 这种特征在手册中没有提到,也没有作为一个特写来宣传。
  2. 我想不出一个简单的方法来实现它。基本表压缩不是确定性的。相同的值可以用许多不同的方式表示,因此,必须将数据解压缩后才能与其他数据进行有意义的连接。
  3. 一个简单的测试用例不显示任何影响。

此示例显示正在分组的高度压缩表。添加或删除compress选项不会更改临时空间的数量。

代码语言:javascript
运行
复制
--Create a table and add data.
drop table table1;
create table table1(
    c1 char(100), c2 char(100), c3 char(100), c4 char(100), c5 char(100),
    c6 char(100), c7 char(100), c8 char(100), c9 char(100), c10 char(100)
) compress; -- Remove "compress" and re-run to compare.  Results will not change.
insert /*+ append */ into table1
select level,level,level,level,level,level,level,level,level,level
from dual connect by level <= 100000;
commit;

--There is about 95MB of data.
select 100000*100*10/1024/1024 mb from dual;

--Segment size is 13MB.
select bytes/1024/1024 from dba_segments where segment_name = 'TABLE1';

--Create a new table using a large GROUP BY.
drop table table2;
create table table2 as
select c1,c2,c3,c4,c5,c6,c7,c8,c9,c10
from table1
group by c1,c2,c3,c4,c5,c6,c7,c8,c9,c10;

--In a separate session, measure the temporary tablespace usage.
--The value tops out at 89MB.
select bytes/1024/1024 mb from dba_segments where segment_name = 'TABLE1';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21630098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档