这周客户的问题非常多,总是说我的数据不对。于是我对数据梳理了以后发现以前认为是重复数据的,其实并不是,而是我忽略了一个维度。那么这样一来,我们的周详单表就会有500多万的数据。一个月按照4周计算,就要有2000万条数据。而我大概计算了一下,每一个周的分区要占用2G多的存储空间,要知道电信给我们的空间不过是500G左右,我们大家都在用,我一个人每周消耗2G,显然不合适。

这个时候有如下几个解决方案,第一个,将一个月或者几个月以前的数据干掉,以后客户需要的时候从数据仓库抽取数据,然后重新展现就好了。但是这个办法并不是很靠谱,因为数据仓库每一段时间会清理一些表,万一那个时候数据没有了,那群客户一定会把我五马分尸。第二种就是对数据本身进行处理,我想到的办法就是压缩表——compress。

压缩表本身的语句相当简单,总的来讲分为两种类型,一种普通表的压缩,一种是分区表的压缩。相关的语法如下:

--建立普通表
create table table1
(
......
) compress;
--建立分区表
create table table1
(
...
) compress
partition by range(...)
(
partition part_1 values less than(...) compress,
partition part_2 values less than(...) compress,
...
)

如果是一个已经存在的表要进行压缩也很简单:

alter table table1 move compress;

如果是一个分区表的话会更加灵活,只需要压缩你想要压缩的表空间就可以了:

alter table tables1 move partition part_1 compress;

在我遇到的这个情况中,我倾向于在另外一个表空间新建一张分区压缩表,然后在存储过程每周刷新数据的时候,把指定的历史数据转移到这个新的表中,然后清空该分区,这种处理方法不管过多久,表的大小基本上是不变的,不用担心时间长了数据会把表空间占满。

根据我在网上查阅的资料,我发现压缩表其实和平时用rar压缩一大堆word文件是差不多的道理,压缩的时候需要耗费不少时间,压缩以后效果非常明显,占用空间只是以前的一半甚至不到一半,但是想查阅这些数据的时候,却要消耗比平时多的时间。据网上的资料显示,甚至会三倍于非压缩表。所以,压缩表并不适合存储当月的新鲜数据,而比较适合历史数据的存储,因为客户想看一年前的数据的情况基本不大,尤其是这种周详单。

还有一点需要讲的是,插入语句必须有hint:/*+append*/,如果不加这个是没有办法压缩的。存进去还是原来那么大。

好文要顶 关注我 收藏该文
0
0
 

« 上一篇:PostgreSQL学习笔记
» 下一篇:一周以来工作总结--关于表的压缩

http://www.cnblogs.com/wingsless/archive/2012/09/23/2699309.html

关于oracle 压缩表的更多相关文章

  1. oracle之压缩表

    oracle压缩数据的处理基于数据库块,本质是通过消除在数据库中的重复数据来实现空间节约. 具体做法: 比较数据块中包含的所有字段或记录,其中重复的数据只在位于数据块开始部分的记号表(Symbol T ...

  2. Oracle ORA-39726压缩表删除字段处理方法

    今天在往一个压缩表增加一个字段可以增加成功,但在删除的时候报了个ORA-39726 unsupported add/drop column operation on compressed tables ...

  3. oracle装载表是什么?

    oracle装载表即通过sqlloader的方式导入数据. Oracle 的SQL*LOADER可以将外部数据加载到数据库表中.下面是SQL*LOADER的基本特点: 1)能装入不同数据类型文件及多个 ...

  4. Oracle的表锁死以及解锁

    Oracle的表锁死以及解锁 oracle 查看锁死的表,锁死的进程. select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_na ...

  5. 如何利用Oracle外部表导入文本文件的数据

    同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开. 基于此,可将该文本文件的数据导入到数据库中,在 ...

  6. ORACLE外部表总结

    外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件.因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中.外部表 ...

  7. Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence

    Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence 使用oracle11g插入数据时遇到这样一个问题: 1 --创建测试表-- 2 CREATE T ...

  8. oracle 锁表问题

    oracle执行表数据更新的时候,会遇到锁表问题,比方说,会遇到这样的问题,主要原因是这张表被其他人占用,修改数据没有提交.oracle为了避免脏数据的产生,在其安全机制下,锁住该表. 执行如下操作, ...

  9. oracle数据库表空间追加数据库文件方法

    oracle数据库表空间追加数据库文件方法   针对非大文件方式表空间,允许追加文件进行表空间的扩展,单个文件最大大小是32G  第一种方式:表空间增加数据文件    www.2cto.com   1 ...

随机推荐

  1. 校赛F 比比谁更快(线段树)

    http://acm.cug.edu.cn/JudgeOnline/problem.php?cid=1153&pid=5 题意:给你一个字符串,各两个操作: ch=0,[l,r]降序 ch=1 ...

  2. 题解报告:hdu 4907 Task schedule

    Problem Description 有一台机器,并且给你这台机器的工作表,工作表上有n个任务,机器在ti时间执行第i个任务,1秒即可完成1个任务.有m个询问,每个询问有一个数字q,表示如果在q时间 ...

  3. java中的位预算

    public class Demo { public static void main(String[] args) { byte num1 = 3; byte num2 = 5; /*位预算 *nu ...

  4. 8.JAVA-向上转型、向下转型

    父子对象之间的转换分为了向上转型和向下转型,它们区别如下: 向上转型 : 通过子类对象(小范围)实例化父类对象(大范围),这种属于自动转换 向下转型 : 通过父类对象(大范围)实例化子类对象(小范围) ...

  5. Spring Cloud是什么?

    [学习笔记] 3)Spring Cloud是什么?马克-to-win@马克java社区:i)Spring Cloud是一个微服务框架,Spring Cloud基于微服务基础框架Netflix进行了up ...

  6. MAC 添加共享,脚本执行

    Linux需要首先安装 yum install samba-client linxu添加windows 公共盘  mount -t cifs  user=guest,password=guest // ...

  7. CAD参数绘制批注(com接口)

    C#中实现代码说明: private void DrawComment() { MxDrawComment com = new MxDrawComment(); MxDrawPoint pt = ne ...

  8. 为什么java String是固定的 为什么字符串是不可变的

    String类不可变的好处 String是所有语言中最常用的一个类.我们知道在Java中,String是不可变的.final的.Java在运行时也保存了一个字符串池(String pool),这使得S ...

  9. css滚动条样式修改

    .activeMoreBankList{ height: 188px; overflow-y: auto;} /*滚动条样式*/.activeMoreBankList::-webkit-scrollb ...

  10. 第4节 hive调优:1、2、fetch抓取和表的优化

    hive的调优:第一个调优:fetch抓取,能够避免使用mr的,就尽量不要用mr,因为mr太慢了 set hive.fetch.task.conversion=more 表示我们的全局查找,字段查找, ...