油井开发数据的优化管理

2007-03-09 19:03:27来源: 互联网
摘要:介绍了数据库查询速度缓慢的常规解决方法及其主要缺点,提出利用Oracle分区功能解决问题,并结合油田开发数据库现状,详细描述了分区的具体实现方法。结合使用情况,总结实施效果,对大数据量表的维护和优化有一定的参考价值。 关键词:Oracle数据库 分区Partition 表空间Tablespace 数据文件Datafile 伴随着信息高速公路的飞速建设,油田的各项勘探开发数据都做到了及时准确入库,数据库中数据量日益增加。以其下属的某个采油厂为例,数据量已达到2GB,各种数据库表更是多达1千多个。与此同时,又产生了一个新问题,那就是虽然各种生产数据都已入库,但是由于数据量巨大,造成查询速度非常缓慢。 本文以油井日度数据表(dba01)为例进行说明。该表是最基础的开发数据,每天每一口井都有记录进入到数据库中。油田规定,该数据15个月内必须保存在线,15个月下来这个表就有997890条记录。 这接近100万条的记录大大增加系统开销,在用户提交查询后,经常需要等待五六分钟才能得到结果,有时甚至查不出数据,给用户的感觉是仿佛处于“死机”状态。 1 常规解决办法 解决大表查询速度缓慢的问题,最初的对策是在后台创建很多中间表。 例如:要得到采油厂生产日数据汇总情况屯解全厂每天的油井开井数、水井开井数、日产油量、注采比等重要数据,其缺点主要有两个: (1)中间表的建立会占用大量表空间,即查询速度的提高是以牺牲服务器空间为代价,造成了巨大的资源浪费; (2)随着各种应用的不断开展,中间表的数量也越来越多,这样人为加大了数据管理和维护的工作量。 因此,要从根本上解决大表存在的查询速度缓慢的问题,必须找到更为有效的方法。 2 采用分区功能解决问题 (1)分区的定义 分区将表分离在若干不同的表空间上,将大的表和索引拆分成小的易于管理的数据片段,分而治之支撑无限膨胀的大表,给大表物理一级的可管理性。将大表分割成较小的分区可以改善表的维护、备份、恢复、事务及查询性能。针对我厂大量的油水井日度数据,可以推荐使用Oracle9的分区功能。 (2)分区的优点 首先,能够成倍提高查询速度:分区管理后,服务器可以进行智能的分区检测。跳过与查询无关的分区访问,并跳过不在线的分区。 其次,增强系统可用性:如果表的一个分区由于系统故障而不能使用,其余好的分区仍然可能使用。 不同分区可以跨表空间存储,降低了磁盘损坏带来的数据不可用性。 3 分区的管理 (1)建立表的各个分区的表空间 下面是建立2004年第一季度表空间的操作语句,指定所建立表空间的名字,所用数据文件的名称、大小和存放目录,并由存储字句指定在该空间中所建立对象的缺省存储参数。 CREATE TABLESPACE ts_dba01_2004q1 DATAFILE "/home2/oracle/test/dba01/2004q1.SIZE 200MB DEFAULT STORAGE (INITIAL 30m NEXT 30m) MINEXTENTS 3 PCTINCREASE 0); (2)建立分区表 下面是建立dba01表的操作语句,指定表名、列名及列的数据类型等。这些都与常规创建表的语句相同。 CREATE TABLE dba01 (jh varchar2(16)not null, rq date not null, cyfs varchar2(3), dwdm varchar2(11), …… PARTITION BY RANGE(rq) PARTITION dba01_2003q4 VALUES LESS THAN(TO_DATE("2004-01-01","YYYY-MM-DD") TABLESDPACE ts_dba01_2003q4, PARTITION dba01_2004q1 VALUES LESS THAN(TO_DATE("2004-04-01","YYYY-MM-DD") TABLESPACE ts_dba01_2004q1) 这是创建分区的语句,指定指照日期进行分区,例如: 日期>="2004-01-01"并且<"2004-04-01"(即2004年第一季度)的数据放在dba01_2004q1分区内。其他分区也依此原则建立。 (3)分区表的扩充 在2004年年底,向表中加入2005年的表空间,同样是每季度一个表空间,预计每个分区为200MB。下面是创建2005年第一季度表空间的操作语句,指定表空间名称、数据文件名称及大小等。 CREATE TABLESPACE ts_dba01_2005q1 DATAFILE "/home2/oracle/dba01_2005q1.dat"SIZE 200MB DEFAULT STORAGE (INITIAL 40m NEXT40m) MINEXTENTS 3 PCTINCREASE 0) 其他季度表空间也如此建立。 (4)为表添加表空间 操作语句如下: ALTER TABLE dba01 ADD PARTITION dba01_2005q1 VALUES LESS THAN(TO_DATE("2005-04-01","YYYY-MM-DD") TABLESPACE ts_dba01_2005q1; (5)删除不必要的分区 采油厂规定:必须保存15个月的日度数据在线。到2005年,必须把2003年3季度的数据备份,将该分区删除,腾出空间供后续数据循环使用。删除分区ALTER TABLE dba01 DROP PARTION dba01_2003q3; 利用操作系统工具删除这个分区所占用的文件 oracle$ rm /home2/oracle/test/dba01_2003q3.dat (6)查看分区信息 可通过对数据字典USER_EXTENTS进行查询,操作如下: SVRMGRL>SELECT *FROM user_extents WHERE SEGMENT_NAME="dba01"; (7)卸载分区 Oracle9的EXPORT工具可卸载分区并导出数据,例如到2002年,可将2000年的数据按分区卸载。 例如:要卸载2003年3季度的数据,数据如下: oracle$ exp tycx/*** tables=dba01:dba01_2003d3 file=dba01_2003q3.dmp 在语句中要指定用户名、口令、需要卸出的表名及分区名、卸出文件名称等。 (8)导入分区 Oracle9的IMPORT工具可导入分区并加载数据,例如在2005年,用户要查看2003年的数据,必须导入该年数据。 %26;#183;建立该表2003年的四个表空间和相应的分区; %26;#183;下面是导入2003年3季度分区数据的操作语句: oracle$ imp tycx/*** file=dba01_2003q3.dmp tables=(dba01:dba01_2003q3) 4 实验效果 (1)能够成倍提高查询速度 分区管理后,服务器可以进行智能的分区检测,跳过与查询无关的分区访问,跳过不在线的分区。 (2)增强系统可用性 如果表的一个分区由于系统故障而不能使用,其余好的分区仍然可以使用。 不同分区可以跨表空间存储,降低了磁盘损坏带来的数据不可用性。 以油井日数据表为例: 不采用分区技术时,若表空间文件受到破坏,会影响到所有数据都无法使用,必须将该表全部记录(多达100万条)重新恢复,工作量很大,恢复期间用户根本无法查询数据,完全不能使用。 而采用分区技术后,由于整个表已按季度拆分为6个分区,因此当某一个表空间文件被破坏,则仅是该分区表空间所对应的季度数据无法使用,其他季度数据仍然可以正常使用,对用户的查询以及其他应用影响不大。 通过合理应用Oracle9的分区功能,可以大大改善系统的性能,降低大表数据管理和维护的工作量,对大表的查询、增加、修改等操作可以分解到表的不同分区并行执行,可使运行速度更快。对促进无纸化办公,辅助生产有积极的推动作用。

关键字:油井  开发  数据  优化

编辑: 引用地址:http://www.eeworld.com.cn/wltx/qtjs/200703/3203.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
油井
开发
数据
优化

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved