位置:51电子网 » 技术资料 » 通信网络

油井开发数据的优化管理

发布时间:2007/4/23 0:00:00 访问次数:548

    摘要:介绍了数据库查询速度缓慢的常规解决方法及其主要缺点,提出利用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,

    摘要:介绍了数据库查询速度缓慢的常规解决方法及其主要缺点,提出利用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,

相关IC型号

Warning: Undefined variable $stockkeys in G:\website_51dzw\www.51dzw.com\code\tech\view.php on line 152
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式