首页 > 范文大全 > 正文

Oracle分区表在移动话费清单中的应用

开篇:润墨网以专业的文秘视角,为您筛选了一篇Oracle分区表在移动话费清单中的应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:在oracle数据库中,如果遇到容量特别大的表(如GB级、TB级),可以使用分区的表来改变其应用程序的性能,而移动话费清单的数据量至少可以用GB级来计量了,存储类似于这种海量数据的用Oracle分区技术处理是最为合适的。本文简述了Oracle数据库中分区表技术的作用及该技术在移动话费清单中的应用,让大家对Oracle数据库分区技术有了更进一步的了解。

关键词:Oracle;分区表;移动话费

中图分类号:TP311.13

据工信部统计,截止2013年12月底,中国移动电话用户总数突破12.6亿户。处理这类巨大型的数据,对于数据库管理员来说,工作量是非常大的。

Oracle数据库提供了一种可以处理海量数据的分区技术,在实际工作中,如果遇到的数据量是GB级或TB级的,可以使用Oracle中的分区表来改变其应用程序的性能。

基于上述情况,如果需要查询某个地区或时间段的移动话费清单,采用Oracle数据库系统提供的分区工表来存储这些海量数据是非常合适的。

1 分区表简介

分区表是指将巨型的表或索引分割成相对较小、可独立管理的部分。Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。

分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。

从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用SQL DML命令访问分区后的表时,无需任何修改。

1.1 分区表的优势

(1)增强可用性。如果表的某个分区损害,表在其他分区的数据仍然可用;

(2)维护方便。如果表的每个分区损害,只需修复该分区即可;

(3)均衡I/O。可以把不同的分区映射到不同的磁盘以平衡I/O,改善整个系统性能;

(4)改善查询性能。对分区表的查询可以只搜索自己关心的分区,以提高检索速度。

1.2 分区表的类型

(1)范围分区。对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。如根据序号分区,根据业务记录的创建日期进行分区等;

(2)Hash分区(散列分区)。通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致;

(3)List分区(列表分区)。需要明确地控制如何将行映射到分区时,就使用列表分区方法;

(4)组合分区。有两个数据分布办法用于创建混合分区,表首先通过第一个数据分布办法进行初始化分区,然后每个分区再通过第二个办法分成子分区。可用的组合分区如下:范围-哈希,范围-列表,范围-范围,列表-范围,列表-列表,列表-哈希。

除此之外,Oracle 11g还新增四种分区技术。分别是间隔分区、引用分区、基于虚拟列分区、交换分区。

2 创建存储移动话费清单数据表

基于移动话费清单数据表的复杂性,因此,在进行表分区时,主分区采用按月份进行分区,子分区按地区进行分区。

(1)为了方便管理数据表,创建特定的表空间存放话费清单数据表,创建的表空间和数据表如下。

create tablespace nw datafile'e:\data\nw01.dbf' size 100m autoextend on;

create temporary tablespace nwtemp tempfile'e:\data\nwtemp.dbf' size 300m;

create table mobilephone

(name varchar2(10) not null,phone_number varchar2(20) not null,month date not null ,region_id varchar2(50) not null )

partition by range(month)

subpartition by list(region_id)

(partition p1 values less than (to_date('2013-01-01','yyyy-mm-dd')),

partition p2 values less than (to_date('2013-02-01','yyyy-mm-dd')),

partition p3 values less than (to_date('2013-03-01','yyyy-mm-dd')),

partition p4 values less than (to_date('2013-04-01','yyyy-mm-dd')),

partition p5 values less than (to_date('2013-05-01','yyyy-mm-dd')),

partition p6 values less than (to_date('2013-06-01','yyyy-mm-dd')),

partition p7 values less than (to_date('2013-07-01','yyyy-mm-dd')),

partition p8 values less than (to_date('2013-08-01','yyyy-mm-dd')),

partition p9 values less than (to_date('2013-09-01','yyyy-mm-dd')),

partition p10 values less than (to_date('2013-10-01','yyyy-mm-dd')),

partition p11 values less than (to_date('2013-11-01','yyyy-mm-dd')),

partition p12 values less than (to_date('2013-12-01','yyyy-mm-dd')),

partition p13 values less than (maxvalue))

(2)查询速度对比。插入数据到mobilephone中进行验证,如图1所示。

图1 查询mobilephone表中的数据

从图1中,可以看出查询该清单数据表花的时间是8秒。

创建非分区表,表结构如下:

create table mobilephone1

(name varchar2(10) not null,phone_number varchar2(20) not null,month date not null,region_id varchar2(50) not null)

在数据表mobilephone1中插入测试数据(与插入mobilephone表的数据相同),在表mobilephone1中进行查询,结果如图2所示。

图2 查询mobilephone1表中的数据

从图2中,可以看出查询该清单数据表花的时间是12秒。从图1和图2结果显示,在没有创建分区表中查询的时间要多4秒。本次测试的数据是14条记录,如果数据越多,则效果更明显。

3 结束语

随着移动用户的数量不断增长,移动系统数据库里的巨型表和索引会越来越多,利用Oracle的分区技术,将这些巨型的表或索引分割成相对较小可独立管理的部分,无疑会使简化数据库的管理和维护工作,同时也使数据库的性能得到改善。

参考文献:

[1]赵振平.Oracle数据库精讲与疑难解析[M].北京:电子工业出版社,2008.

[2]Oracle Database 10g DBA手册[M].北京:清华大学出版社,2006.

[3]王伟平.Oracle 11g网络大讲堂[M].北京:清华大学出版社,2013.

[4]张鑫.基于Oracle的电信级数据仓库查询优化研究与实现[D].西安电子科技大学,2007.

[5]钟明.基于Oracle成本的系统性能优化方法研究与应用[D].中南大学,2011.

[6]徐辉良.基于ORACLE的数据库性能调优技术研究[D].西南交通大学,2009.

作者简介:游琪,女,江西九江人,讲师,硕士研究生,研究方向:计算机应用、数据库应用。

作者单位:广东科学技术职业学院,广东珠海 519090