关于oracle 压缩表
这周客户的问题非常多,总是说我的数据不对。于是我对数据梳理了以后发现以前认为是重复数据的,其实并不是,而是我忽略了一个维度。那么这样一来,我们的周详单表就会有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*/,如果不加这个是没有办法压缩的。存进去还是原来那么大。
« 上一篇:PostgreSQL学习笔记
» 下一篇:一周以来工作总结--关于表的压缩
http://www.cnblogs.com/wingsless/archive/2012/09/23/2699309.html
关于oracle 压缩表的更多相关文章
- oracle之压缩表
oracle压缩数据的处理基于数据库块,本质是通过消除在数据库中的重复数据来实现空间节约. 具体做法: 比较数据块中包含的所有字段或记录,其中重复的数据只在位于数据块开始部分的记号表(Symbol T ...
- Oracle ORA-39726压缩表删除字段处理方法
今天在往一个压缩表增加一个字段可以增加成功,但在删除的时候报了个ORA-39726 unsupported add/drop column operation on compressed tables ...
- oracle装载表是什么?
oracle装载表即通过sqlloader的方式导入数据. Oracle 的SQL*LOADER可以将外部数据加载到数据库表中.下面是SQL*LOADER的基本特点: 1)能装入不同数据类型文件及多个 ...
- Oracle的表锁死以及解锁
Oracle的表锁死以及解锁 oracle 查看锁死的表,锁死的进程. select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_na ...
- 如何利用Oracle外部表导入文本文件的数据
同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开. 基于此,可将该文本文件的数据导入到数据库中,在 ...
- ORACLE外部表总结
外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件.因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中.外部表 ...
- Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence
Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence 使用oracle11g插入数据时遇到这样一个问题: 1 --创建测试表-- 2 CREATE T ...
- oracle 锁表问题
oracle执行表数据更新的时候,会遇到锁表问题,比方说,会遇到这样的问题,主要原因是这张表被其他人占用,修改数据没有提交.oracle为了避免脏数据的产生,在其安全机制下,锁住该表. 执行如下操作, ...
- oracle数据库表空间追加数据库文件方法
oracle数据库表空间追加数据库文件方法 针对非大文件方式表空间,允许追加文件进行表空间的扩展,单个文件最大大小是32G 第一种方式:表空间增加数据文件 www.2cto.com 1 ...
随机推荐
- 洛谷 P2617 Dynamic Rankings || ZOJ - 2112
写的让人看不懂,仅留作笔记 静态主席树,相当于前缀和套(可持久化方法构建的)值域线段树. 建树方法:记录前缀和的各位置的线段树的root.先建一个"第0棵线段树",是完整的(不需要 ...
- lavas安装
最近在研究pwa,百度基于此写了一套开源框架lavas,学习下: 1.环境准备: lavas 安装.git安装 Node.js:https://nodejs.org/ Git:https://git- ...
- Python基础第一天
诞生时间:1991年,创造者Guido van Rossum 优点: 1.简单 Python是一种代表简单注意思想的语言 2.易学 Python是及其容易上手,因为Python有极其简单的说明文档 ...
- Snort里的规则目录文件解读(图文详解)
不多说,直接上干货! snort的规则啊,是基于文本的,它通常存在于snort程序目录中或者子目录中,规则文件按照不同的组,进行分类存放的. snort的安装目录 [root@datatest sno ...
- 转】Nodejs对MongoDB模糊查询
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/4/ 感谢! Posted: Jul 1, 2013 Tag ...
- 微信里去掉下拉select的边框
<select name="gender" id="" class=" " style=" -webkit-appeara ...
- ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第四天(非原创)
文章大纲 一.课程介绍二.今日内容介绍三.参考资料下载四.参考文章 一.课程介绍 一共14天课程(1)第一天:电商行业的背景.淘淘商城的介绍.搭建项目工程.Svn的使用.(2)第二天:框架的整合.后台 ...
- bootstrap框架栅格系统使用
使用的前端框架 bootstrap框架 Bootstrap是一个响应式的框架 我们在使用的时候主要使用的是它的网格系统, 1.bootstrap布局 布局容器:.container(用于固定宽度并支 ...
- Angular jsonp 同源策略的问题
引用:http://www.cnblogs.com/dengzy/p/5388357.html 说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决 ...
- java-IO操作性能对比
在软件系统中,IO速度比内存速度慢,IO读写在很多情况下会是系统的瓶颈. 在java标准IO操作中,InputStream和OutputStream提供基于流的IO操作,以字节为处理单位:Reader ...
