摘要:这周很平静,没有客户的纷纷扰扰。 前一阵子写了一些有关数据表的压缩的东西,我现在感觉把数据压缩了迁移走,或者直接迁移走也是一种不错的办法。 现在有这样一张表: CREATE TABLE TABLE_1 ( MONTH_ID VARCHAR2(10), AREA_ID VARCHAR2(10), SERI NUMBER)PARTITION BY RANGE(MONTH_ID)subpartition by list (AREA_ID) subpartition template( subpartition subpart_1 values ('1'), ... 阅读全文
posted @ 2012-10-17 21:53 wingsless 阅读(4362) 评论(2) 推荐(2) 编辑
摘要:前一阵子一直在研究着Oracle的表分区的相关知识。在数据量不断扩大的现在,分区技术是一种非常有效的提高效率的技术。 限于业务的原因,我以前每次建立分区表的时候都喜欢用日期进行分区,每天一个range分区。但是突然有一天我遇到了一个很讨厌的表,是一个对应关系表,只有产品和销售品的对应关系,这个样子的表是没有办法建立我最熟悉的range分区的,经过我查阅资料以后我发现hash分区是一个比较好的解决方案。 hash分区就是对分区字段进行hash运算后,将数据均匀的分布在每一个分区上。hash,在大学的时候数据结构课上学过,意思是杂凑,听这个名字就知道这个方法无比适合。 新学的分区语句: ... 阅读全文
posted @ 2012-09-28 19:28 wingsless 阅读(2208) 评论(6) 推荐(3) 编辑
摘要:昨天写了一下关于Oracle表压缩的问题(http://www.cnblogs.com/wingsless/archive/2012/09/23/2699309.html),由于时间原因没有具体的实验,只是使用了网上的资料,但是这并不是我的风格,因为网上资料直接拿来转载的多,自己原创的少。所谓事必躬亲嘛,做个实验。 有两张表,一张压缩(TEST_1)一张不压缩(TEST)。 首先看看占用空间的情况,查表的语句如下: BEGIN FOR I IN 1 .. 50 LOOP INSERT /*+append*/ INTO TEST_1 SELECT * FROM DBA... 阅读全文
posted @ 2012-09-24 21:52 wingsless 阅读(1790) 评论(0) 推荐(0) 编辑
摘要:这周客户的问题非常多,总是说我的数据不对。于是我对数据梳理了以后发现以前认为是重复数据的,其实并不是,而是我忽略了一个维度。那么这样一来,我们的周详单表就会有500多万的数据。一个月按照4周计算,就要有2000万条数据。而我大概计算了一下,每一个周的分区要占用2G多的存储空间,要知道电信给我们的空间不过是500G左右,我们大家都在用,我一个人每周消耗2G,显然不合适。 这个时候有如下几个解决方案,第一个,将一个月或者几个月以前的数据干掉,以后客户需要的时候从数据仓库抽取数据,然后重新展现就好了。但是这个办法并不是很靠谱,因为数据仓库每一段时间会清理一些表,万一那个时候数据没有了,那群... 阅读全文
posted @ 2012-09-23 22:35 wingsless 阅读(2154) 评论(3) 推荐(0) 编辑
摘要:据以前的同事说这个数据库很快,比Oracle快。我希望做一个测试。 测试的内容非常简单,同一个表结构,同样多的数据,做几次count,比一比平均时间。 首先是表结构,有三个字段,month_id,password,user_no,分别是varchar,varchar,number类型。数据量30207104条。不算大,但是也绝不小,对于我这种PC机来说,已经挺可观了。 首先是PostgreSQL。直接看结果: 11秒,速度不错。 再看看Oracle: 14秒,有点让我失望了。 尽管对比效率应该是查看的执行计划的,但是由于这是两个不同的数据库,所以执行计划的可比性不是非常大,所以就用这个土办法. 阅读全文
posted @ 2012-08-18 15:10 wingsless 阅读(1975) 评论(14) 推荐(1) 编辑
摘要:前一阵子写了一点有关分区表的东西(http://www.cnblogs.com/wingsless/archive/2012/02/11/2347111.html)。我们的项目限于甲方的抠门,分配给我们的磁盘空间相当的小,因此我们的项目中并不习惯使用索引这个好用的东西,因为索引也是要耗用很大的空间的,有的时候索引占据的空间比数据表还要大。于是我们约定俗成的使用了分区表,而且很多同事认为分区表就相当于建立了很多很多的小表一样。事实,确实如此吗? 建立一张分区表test1,按照month列进行分区,数据量大概在1200万左右,201205这个分区中有4194304条记录。 建立一张表test_2. 阅读全文
posted @ 2012-08-06 22:07 wingsless 阅读(2045) 评论(2) 推荐(3) 编辑
摘要:我的项目有一张表,始终是手动导入数据。我接手之前的同事总是喜欢用pl/sql developer,但是我觉得还是黑框框看着有技术含量。 这里顺便就写一下有关sqlldr的简单用法。有关sqlldr资料比较全面的应该就是帮助了,打出来看一下。SQL*Loader: Release 11.2.0.1.0 - Production on 星期六 8月 4 12:54:31 2012Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.用法: SQLLDR keyword=value [,keywor.. 阅读全文
posted @ 2012-08-04 13:19 wingsless 阅读(29732) 评论(2) 推荐(0) 编辑
摘要:DECLARE V_SQL VARCHAR2(1000); V_SQL_HEAD VARCHAR2(100); V_SQL_TAIL VARCHAR2(10); V_DAY VARCHAR2(8); CURSOR C_CUR IS SELECT TO_CHAR((TO_DATE('2012-01', 'yyyy-mm') + (ROWNUM - 1)), 'YYYYMMDD') S_DATE FROM DUAL CONNECT BY ROWNUM <= LAST_DAY(TO_DATE('2012-12',... 阅读全文
posted @ 2012-06-29 16:44 wingsless 阅读(5048) 评论(2) 推荐(0) 编辑
摘要:declare v_sql varchar2(1000); TABLE_NAME VARCHAR2(100); I_DAY VARCHAR2(8) := '20120611'; I_L_DAY VARCHAR2(8);begin I_L_DAY := TO_CHAR((TO_DATE(I_DAY, 'YYYYMMDD') + 1), 'YYYYMMDD'); TABLE_NAME := upper('表名'); v_sql := 'ALTER TABLE' || ' ' || TABLE_NAME 阅读全文
posted @ 2012-06-25 09:54 wingsless 阅读(636) 评论(0) 推荐(0) 编辑
摘要:DELETE FROM table1 WHERE id IN (SELECT id FROM table1 GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM table1 GROUP BY id HAVING COUNT(id) > 1) 阅读全文
posted @ 2012-06-25 09:46 wingsless 阅读(277) 评论(2) 推荐(0) 编辑
摘要:PostgreSQL 阅读全文
posted @ 2012-05-03 21:49 wingsless 阅读(1593) 评论(8) 推荐(3) 编辑
摘要:学oracle的人总会纠结于各种各样的函数。nvl应该算是一个非常好用的玩意儿。 nvl其实很简单,就是没有就返回一个指定值。 假定一个表中有两列,id和names,id=2的names为null。那么这个语句会返回这样的结果: 1 select nvl(t.names, 'noname') from test t where t.id = 2; 会华丽的的得”noname“。 当然你看到的功能decode也是可以做到的,那么这个nvl有啥用呢?我平时这样使用,因为我要汇总陕西省十个地市的数据,一定要有一行记录全省的记录。这个时候就可以用rollup或者cube来配合nvl。. 阅读全文
posted @ 2012-04-25 21:06 wingsless 阅读(1485) 评论(0) 推荐(0) 编辑
摘要:今天把自己刻的一张有oracle安装包的碟塞进我那个无比风骚的吸入式光驱中,结果这张盘刻坏了。结果是在我的电脑里点右键就会导致explorer死掉,根本没有任何反应,这种常规的方法没有用了,而且我买电脑的时候用的是vista,后来换成windows7之后键盘上那个弹出光驱键始终就是没有用,于是这两条简单的路被我自己堵上了。 后来我去网上搜索了几种办法,罗列如下: 1 甩电脑法:关掉电脑使劲甩。也不知道是哪个SB想出来的,吸入式光驱在把光盘吸入后在光驱口部会有一个小金属部件卡住,断电后这个部件仍然在位置上,所以你就是把电脑甩散架了也无济于事。果断鄙视之。 2 戳小孔法:光驱附近有个小孔... 阅读全文
posted @ 2012-04-22 19:10 wingsless 阅读(25509) 评论(4) 推荐(2) 编辑
摘要:近年来数据库界最红的无疑是noSQL了,大佬oracle也开始搞了。对于非关系型数据库我还不是很了解,因此开始学习比较好上手的mongoDB好了。定时的做笔记也是学习的十分好的习惯。 1 数据库软件的安装。其实MongoDB(windows版本)是绿色的。这是非常好的事情,不用等待好久去安装了。在官网上(http://www.mongodb.org/downloads)就可以下载,然后解压到本地就可以了。这里我解压到了E:\MongoDB下。 2 数据文件路径。和所有的数据库一样,数据的存储要有专门的数据存储目录(windows下叫做文件夹的比较多)。在bin目录底下能看到很多很多的可... 阅读全文
posted @ 2012-03-10 16:39 wingsless 阅读(1523) 评论(8) 推荐(2) 编辑
摘要:从今天开始我决定每周抽出一些空闲时间,记录一下Oracle的一些基础知识,也算是方便用baidu和google的人吧。 今天介绍一个非常有数学气息的--连接。 首先介绍我今天需要使用的两张表,test1和test2。test1是学生基本信息表,包括学生的名字和学号;test2是成绩表,有学生学号,成绩这两列。 表的数据如下图: test1: test2: 这两个表由stu_id进行关联。 好了,现在介绍第一种连接形式:内连接。代码如下: SELECT T1.STU_ID, T1.STU_NAME, T2.SCORE FROM TEST1 T1 INNER JOIN TES... 阅读全文
posted @ 2012-02-25 20:46 wingsless 阅读(507) 评论(0) 推荐(1) 编辑