Oracle数据库分区技术研究与应用

2021-10-18 10:38张景林
关键词:数据表分区硬盘

张景林

(齐齐哈尔大学 网络信息中心,黑龙江 齐齐哈尔161006)

一般来讲,用户在对业务数据进行实时随机检索时,DBMS要对目标海量数据进行完整的查询。因此目标数据量很大,此类操作需要大量的系统资源,导致数据查询过程时间长、效率低。为解决这个问题,可以利用数据库分区技术管理用户数据,根据用户数据表主键值为存储分区原则,完成分区的规划和创建。分区的本质是针对主键序列值的不同,对不同级别、不同层次的主键值对数据记录完成不同区域内的存储设计,将对应范围内属性值组的表数据分别存储在操作系统中的指定目录,实现对操作系统中数据库用户数据在依据主键组值对目标数据的分区存储,以提高数据库数据的查询效率[1]。

1 分区管理机制

Oracle数据库分区机制是一种逻辑存储技术,同硬盘存储技术相结合,将数据表数据分别存储在不同硬盘或同一硬盘的不同逻辑分区。当用户在进行数据操作时,DBMS在一个指定的磁盘内和相应目录下完成数据修改或检索,而不需要检索整个数据表。基于分区技术的数据表是一个完整的用户表,用户对这类分区表的操作同普通数据表相同。由于数据库管理系统针对用户分区表的检索要求从不同的存储位置匹配数据,若采用分区技术,系统可以减少磁盘I/O操作,减少无谓的数据传输,提高系统工作效率。在实际应用时,如果一个数据分区发生错误,数据库管理系统只需恢复故障分区的数据,故障分区对其他分区数据的正常应用没有影响。分区机制的优点是使数据库存储的配置更灵活,提高数据存储的安全性,系统可分别对某一分区数据进行删除或备份。

2 分区管理原则

用户在管理数据时,需要完成数据库的物理和逻辑设计,主要包括两个方面的内容:首先要确保系统内多个磁盘的I/O负载平衡;再一方面是要减少不同逻辑对象间的I/O操作冲突。DBMS依据主关键字段值的不同范围确定存储原则,完成对目标物理硬盘数据库中特定逻辑空间内唯一数据的实时检索,以提高系统操作效率。

2.1 用户数据管理

在用户数据库设计时,若一个逻辑数据表空间大于2 GB,应当对目标表的生成使用分区管理机制。以Oracle 9i版本为例,用户可依据实际需要管理数据量,创建多种形式的应用分区、哈希表分区和指定的目录分区等。当用户数据表记录数超过千万条级别时,依据记录中有变化规律的字段来进行范围分区,如时间、数据种类、数值范围等变量字段。例如某大型商业网站交易流水的数据管理,客户在网站实名注册,对应有客户基本信息主文件(表)CUSTOMER_TABLE、CUSTOMER_TABLE中的用户日常所发生的商品销售流水日志文件TRANSACTION_TABLE(表)等都是超过千万条的数据表,对于这种数据量巨大的目标表,在设计时应当采用分区机制完成对应表的创建[2]。

2.2 确定数据表分区的基本依据

受网站管理和数据性质的影响,网站对于数据库系统内需要经常访问、更新业务数据表,可以采用时间字段作为表分区依据;当对目标数据记录进行频繁访问、批量修改,特别是有重复的批量更新时,分区表更能发挥其优势,使数据库有效降低系统资源占用。如果对数据表的操作大部分是只读性质时,分区数据表可以将同类数据储存在一个或数个连续的只读性质的逻辑表空间中,数据库中只读性质的数据量不宜过大。当用户对海量数据的大部分操作是基于数据表的某一(数)个字段值的随机、零散的检索查询且目标对象是数据表中相聚集的数据时,数据库管理系统可以充分利用分区机制来缩小数据检索范围。

3 创建分区表样本

以某商业网站客户商品销售流水日志文件(表)“TRANSACTION_TABLE”数据表管理为例,研究商业网站数据库流水日志数据表的设计原则和管理特点。在Oracle 9i环境下,在四个独立的系统硬盘上创建四个表空间TRANSACTION_TABLE_space1、TRANSACTION_TABLE_space2、TRANSACTION_TABLE_space3和TRANSACTION_TABLE_space4(均为100MB),分别存储20万条数据记录,客户基本信息主文件(表)CUSTOMER_TABLE。为使研究的问题简单化,设计CUSTOMER_TABLE由四个字段组成,分别是账号customer_account_no、户名customer_account_name、交易日customer_trans_date和交易额customer_amount,用户数据根据主键值在不同区内,分别对应上面的四个单独的表空间。建表代码如下[3]:

4 数据库分区表插入样本数据

以数据库的CUSTOMER_TABLE表为目标对象,插入相关的随机数据,分析某一类数据表中的一个字段值发生的规律性变化,数据库数据分区机制的应用过程,涵盖创建数据表CUSTOMER_TABLE、序列SEQUENCE_A的创建(表示客户账号)和记录插入等过程,系统代码如下[5]。

分析上面程序的运行结果,数据库完成了对 TRANSACTION_TABLE_space1、TRANSACTION_TABLE_space2、TRANSACTION_TABLE_space3和TRANSACTION_TABLE_space4四个独立表空间的数据录入,这些数据分别存储在四个表空间相对应的四个分区PART_1、PART_2、PART_3和PART_4内,向CUSTOMER_TABLE表插入了80万条记录,独立的每个表空间所对应的数据库分区都存储有20万条记录,表中的客户账号和户名均为32位,客户账号从1开始到800 000,户名是操作系统随机计算生成的字符串,客户交易日期是操作系统当前日期同一个80万内随机数值的和,客户交易发生额设为常数5 000。

5 结束语

采用数据库分区技术,实现了对同一类海量数据的分盘、分区和分范围存储,使应用系统负载运行趋于平衡。采用分区技术后,数据根据关键字段值(account_no)确定存储位置,用户在对CUSTOMER_TABLE表进行customer_account_no条件查询时,DBMS会依据查询条件索引值到系统特定空间上查找匹配对象,提高检索效率。

猜你喜欢
数据表分区硬盘
贵州省地质灾害易发分区图
上海实施“分区封控”
HiFi级4K硬盘播放机 亿格瑞A15
Egreat(亿格瑞)A10二代 4K硬盘播放机
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
服务器更换硬盘后的同步问题
大型数据库分区表研究
大空间建筑防火分区设计的探讨