摘要: 我希望用程序生成一些测试数据,测试一下开源数据库中哪个比较适合我们的数据仓库项目,于是有了这篇随笔。 其实测试数据可以用过程生成,但是我想学学java因此决定用程序实现。而且我先在把windows这个让我一打开电脑就想娱乐的系统卸载了,现在纯Ubuntu。 先记录下Java的配置: 首先需要下载Java,这是一个很简单的过程,链接在这里:http://www.oracle.com/technetwork/java/javase/downloads/index.html。我的是64位系统,因此选择了64位的gz包。下载好以后随便解压到哪个目录底下都是可以的。然后只需要配置这么几个环境变量... 阅读全文
posted @ 2013-06-01 00:42 wingsless 阅读(1173) 评论(0) 推荐(0) 编辑
摘要: 换了新的单位我现在也从oracle从业者变成了mysql从业者,当然放弃oracle的原因主要是因为在新单位可以尽量少的写代码了。 现在我面对的是一个数据仓库,和上一家公司一样,数据仓库最让我们技术人员受不鸟的是数据量太大,存储,I/O,效率都让人想死,每次有些统计分析要求,在清单表里查询简直是让我等到花儿都谢了。那么会有什么好的办法呢?我想这个问题提出来会有很多人告诉我用hadoop。是的,hadoop是现在最流行的大数据解决方案,但是hadoop有一个问题,就是我们小组现在没有人会,还需要很长的时间去学习,去搭建,而且我也不愿意轻易放弃传统的关系型数据库,说真的我连Mango都很抵制。 . 阅读全文
posted @ 2013-05-25 19:35 wingsless 阅读(10353) 评论(0) 推荐(0) 编辑
摘要: 昨天有个同事找我看了一段SQL,说是很慢,我首先看了看执行计划,发现COST很大,但是同时我也发现分区读取的有很大的问题。表示这样的: create table test1 ( day_id number ) partition by range(day_id) ( partition part_0 阅读全文
posted @ 2013-04-08 13:52 wingsless 阅读(12343) 评论(0) 推荐(0) 编辑
摘要: 最近整理了一下系统内所有表的空间占用情况,发现其中一些表其实只有及万行,却占用了非常大的空间,那么显而易见,这个表的“碎片”实在是太多了。 最开始接触oracle的时候我认为删除数据就是delete,但是后来的学习中,发现事情并不是我想象的那么简单,delete之后,系统也只是将这部分数据块置为可写 阅读全文
posted @ 2013-04-05 14:13 wingsless 阅读(1563) 评论(5) 推荐(2) 编辑
摘要: 今天有同事告诉我,有个SQL执行了好久好久执行不出来,我说好就是多久?她说一天左右了。真是令人咋舌的SQL。于是我要来了SQL看了看执行计划,确实让人咋舌。 下图中就是执行计划的截图: 25G的COST和75T的Bytes确实是无法承受之重。这个SQL是这样子的: select部分做了很多sum运算 阅读全文
posted @ 2013-03-28 20:30 wingsless 阅读(1402) 评论(4) 推荐(1) 编辑
摘要: 最近负责起了DBA的部分工作,于是有一天在对表空间的清理中发现了一张表,这个表有27G那么大,是一个分区表,按天分区。我查看了过程,每天删除35天以前的数据,但是用的方法是delete,那么我就可以很明确的推断出,这个表占用了大量本应该释放的空间。 我第一个使用的方法是move: alter tab 阅读全文
posted @ 2013-03-13 13:55 wingsless 阅读(1383) 评论(0) 推荐(0) 编辑
摘要: 很久以前写了一个关于分区表的博文(http://www.cnblogs.com/wingsless/archive/2012/08/06/2625809.html),后来在实际的工作中发现,我们的存储过程中存在很多这样子的写法: CREATE OR REPLACE PROCEDURE P_TEST_ 阅读全文
posted @ 2013-03-09 15:39 wingsless 阅读(1792) 评论(0) 推荐(0) 编辑
摘要: 前一篇随笔被我写的乱七八糟的,于是新开一块。 从库建好了的准备工作开始写吧。 1 创建表空间: SQL> CREATE TABLESPACE WINGS DATAFILE 'D:\app\user\oradata\oracl\WINGS_F01.DB F' SIZE 50M AUTOEXTEND O 阅读全文
posted @ 2013-03-09 11:49 wingsless 阅读(770) 评论(0) 推荐(0) 编辑
摘要: 今天收到一个同事的问题,有一段SQL跑了很久很久,根本没有结果,根据同事的反映,这个SQL一个月比一个月要慢。这是不被允许的事情,我们要做的就是对这个SQL进行一次优化。下面就是这次优化的记录。 首先说SQL: select t.month_id, t1.area_id, t1.local_id, 阅读全文
posted @ 2013-01-07 21:37 wingsless 阅读(4496) 评论(18) 推荐(6) 编辑
摘要: 今天收到一个同事的求助,说有一个SQL跑了一个多小时没有结果。我看了看,这个SQL是这样的(隐藏了敏感信息): SELECT 电话号码, 列2, 列3, MAX(STARTTIME), FLAG FROM 表1 T1 WHERE FLAG = '0' AND 电话号码 NOT IN (SELECT 电话号码 FROM 表2 T2) GROUP BY 电话号码, 列2, 列3, FLAG; 我首先查看了两个表的数据量,表1有将近300万条,表2有不到10万条记录。并不是很大的数据。于是我关注到了not in,这个语句是几乎所有的优化指南上都明确说了要避免的语句。于是我就把这句改了 阅读全文
posted @ 2012-11-22 22:49 wingsless 阅读(2827) 评论(18) 推荐(8) 编辑
摘要: 我一直不知道到底有没有函数可以实现标题的功能,所以我写了个适合我们业务的。如果大家有更好的,请告诉我。下面是源码: CREATE OR REPLACE FUNCTION REPLACE_POSITION(STR_IN VARCHAR2, POSITION INTEGER, NEW_CHAR VARC 阅读全文
posted @ 2012-11-20 17:34 wingsless 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 在linux下面安装oracle是一件让人恼火的事情,不像windows下面那样简单,但是windows在服务器领域实在是不争气,一个好的DBA同时也是一个linux高手。我今天就折腾了一下oracle,下面把安装过程记录下来,以供我以后参考。 1 修改内核参数: /etc/sysctl.conf 在这个文件后面添加如下内容:kernel.shmall = 268435456kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max 阅读全文
posted @ 2012-11-12 22:23 wingsless 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 熬过了月初的匆忙之后终于有一个喘息的机会了。最近又开始接手过去的存储过程的改造工作,我在改造中发现了一些问题,我们的同事写insert语句的时候总是喜欢加上append这个hints。这个习惯的养成应该都是我们那个模板造成的,大家在写的时候也就不去思考为什么要加这个hints了,也不知道加这个hin 阅读全文
posted @ 2012-11-11 00:28 wingsless 阅读(2210) 评论(4) 推荐(0) 编辑
摘要: 我曾经迷茫于一个问题,为什么有的时候明明有索引,却无法提升效率。后来我在很多书上和论坛上看到,索引分为3种,默认的是B树索引,这个类型的索引在对付重复很多很多的列的时候并没有任何优势,比如性别列这个只有两个值(不排除会有第三值)的列。而这种重复度很高的列在我平时的生产系统中非常多,比如运营商的行政区 阅读全文
posted @ 2012-10-25 20:40 wingsless 阅读(2176) 评论(6) 推荐(0) 编辑
摘要: 前一阵子一直在研究着Oracle的表分区的相关知识。在数据量不断扩大的现在,分区技术是一种非常有效的提高效率的技术。 限于业务的原因,我以前每次建立分区表的时候都喜欢用日期进行分区,每天一个range分区。但是突然有一天我遇到了一个很讨厌的表,是一个对应关系表,只有产品和销售品的对应关系,这个样子的表是没有办法建立我最熟悉的range分区的,经过我查阅资料以后我发现hash分区是一个比较好的解决方案。 hash分区就是对分区字段进行hash运算后,将数据均匀的分布在每一个分区上。hash,在大学的时候数据结构课上学过,意思是杂凑,听这个名字就知道这个方法无比适合。 新学的分区语句: ... 阅读全文
posted @ 2012-09-28 19:28 wingsless 阅读(2262) 评论(6) 推荐(3) 编辑