当前位置:七道奇文章资讯数据防范Oracle防范
日期:2011-03-21 00:21:00  来源:本站整理

Oracle 数据表分区的战略[Oracle防范]

赞助商链接



  本文“Oracle 数据表分区的战略[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
  本文描写通过统计解析出病院信息系统分区的表,对需分区的表挑选分区键,即找出包含在你的分区键中的列(表的属性),对大型数据的管理对比有意义, 本文的工作在Oracle8.1.6下实现.

  Oracle固然是一个大型的DBMS,但假如不对记录对比多的表举行处理,仍旧施展不了Oracle管理大型数据的强盛功效,因此对某些表举行分区,具有以下长处:

  分区表中每个分区可以在逻辑上认为是一个独立的对象;

  可以在一个表中的一个或多个分区上举行如删除、移动、析分等保护操作,而不会影响别的分区,具有分区独立性;

  假如挑选符合的分区战略,会大大的加快数据的查询速度.

  一 找出需分区的表

  本节描写通过统计解析出病院His系统需分区的表,对需分区的表找出包含在你的分区键中的列(表的属性),即挑选分区键.

  1、基于拜候频度找出需分区的表

  Oracle8i答应拜候数据库中的考核信息,借助于汇集的考核信息,计划者可以肯定哪些表的数据是真正最频繁拜候的,即找出那些表,需求举行分区.

  翻开考核:在作为SYS或SYSSTEM登录到数据库后,动行以下脚本,翻开对象的考核功效.

set echo off feed off ver off pages 0
spool audon.sql
select ’audit select on ’||owner||’.’||object_name||’ by
access;’
from dba_objects
where object_type in (’VIEW’,’TABLE’) and owner in
(’ORDADM’);
spool off
set echo on feed on ver on

  这些代码的运行将产生"audon.sql"的输出文件,它包含下面清单中所示格局的语句

audit select on ORDADM.DOCTOR_ORDERS by access;
audit select on ORDADM.GROUP_ORDER_ITEMS by access;
audit select on ORDADM.GROUP_ORDER_MASTER by access;
audit select on ORDADM.ORDERS by access;
audit select on ORDADM.ORDERS_COSTS by access;
audit select on ORDADM.ORDERS_SHEET_IMAGE by access;
audit select on ORDADM.VITAL_SIGNS_REC by access;

  利用号令@audon.sql激活上述代码以翻开考核功效汇集汇集考核信息,成立一个表以保存概要信息:

create table aud_summary (
obj_name varchar2(30),
owner varchar2(30),
hits number);

  将考核信息从dba_audit_object表中取出并装入概要表中:

insert into aud_summary
select obj_name,owner,count(*)
from dba_audit_object
group by obj_name,owner;

  关闭考核:

set echo off feed off ver off pages 0
spool audoff.sql
select ’noaudit select on ’||owner||’.’||object_name|| ’
by access;’
from dba_objects
where object_type in (’VIEW’,’TABLE’) and owner in
(’ORDADM’);
spool off
set echo on feed on ver on

  这些代码的运行将产生"audoff.sql"的输出文件.

  利用号令@ audoff.sql激活上述代码以关闭上述对象的考核功效.

  排除考核信息:

delete sys.aud$

  解析考核信息

col obj_name form a30
col owner form a20
col hits form 99,990
selec obj_name,owner,hits from aud_summary;
OBJ_NAME OWNER COUNT(*)
----------- ------------- ----------
DOCTOR_ORDERS ORDADM 30309
DRUG_STOCK PHARMACY 11094
GROUP_ORDER_ITEMS ORDADM 1030
GROUP_ORDER_MASTER ORDADM 1196
ORDERS ORDADM 40421
ORDERS_COSTS ORDADM 10109

  以上是HIS系统临床医嘱部份24小时内对表的拜候情形,从上面的查询得表1-1.

  表1-1

行数 命中率
doctor_orders 2052709 30309
drug_stock 2511 11094
group_order_item 3800 1030
group_order_master 186 1196
orders 1633010 40421
orders_costs 2403214 10109

  group_order_master( 医嘱套攴主记录) 、group_order_item(医嘱套攴明细), 表的行数对比少,不合适分区;drug_stock(药品库存)固然存取频率对比高,但表的行数对比少,因此也不合适分区.我们挑选表的行数对比多、存取频率对比高的表作分区处理,如 doctor_orders、orders、orders_costs,考虑到doctor_orders是医生工作站上医生开的医嘱,orders是由doctor_orders生成、护士工作站上履行的医嘱,两个表构造近似,而医嘱与药品、卫生质料、计费接洽对比密切的是Orders,因此重点介绍对表orders的处理.

  2、基于列值挑选分区键

  利用Sql*plus下用号令Analyze汇集末分区表的统计信息,按照Oracle举荐的取样20%举行解析,并将统计后果保存在数据字典中.

Analyze table ORDADM.ORDERS estimate statistics
sample 20 percent;

  对DBA_TAB_COLUMNS数据字典视图举行查询

  产生表1-2

select table_name,column_name,num_distinct
from DBA_TAB_COLUMNS
where owner like ’ORDADM’;

  表1-2

差别的值
PATIENT_ID 28720
VISIT_ID 2
ORDER_NO 395
ORDER_SUB_NO 10
ORDER_CLASS 9
ORDER_CODE 825
ORDER_TEXT 1551
ORDERING_DEPT 15
START_DATE_TIME 1194176
STOP_DATE_TIME 636798
   


  从表1-2中,我们可以看到欲分区表的各个候选分区键的分布频谱,ORDER_CODE(医嘱代码)键值没有呈现一种均匀分布,用它作分区键,明显不符合;

  ORDER_CLASS(医嘱类别代码)、ORDERING_DEPT(开医嘱科室代码),键值呈现均匀分布,如用它的各个键值作基于范围的分区,每个分区具有的记录数对比均匀,但这种办法关于每天增添上万条记录的表来看,明显不是最优的.假如选用START_DATE_TIME(医嘱开始时间)成立范围分区,每月的数据成立一个分区,在每个分区内基于ORDERING_DEPT成立散列子分区,每月的数据形成一个组合分区,会使每个分区的记录数分布均匀、查询速度提高、易于备份和删除.因为大大都的统计和查询是在一个月的范围内,并且从实际的查询效果看,跨月和跨年纪据的统计和查询速度,也比未分区的时刻大大缩短,效果十清楚显.

  以上是“Oracle 数据表分区的战略[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • SQL Server中利用Linkserver衔接Oracle的办法
  • Oracle数据库网络与安全FAQ精辟堆积
  • Ubuntu 9.10下安装Oracle10g
  • Ubuntu 10.04 下安装Oracle 11g
  • oracle盲注报错语句和oracle提权语句汇总
  • oracle中to_char、to_number、to_date的用法
  • Python模拟Oracle的SQL/PLUS工具的实现办法
  • Oracle数据库访谈之最年青的OCM访谈
  • oracle表数据误删复原
  • Oracle数据库笔记--表空间
  • Oracle数据库树形查询的代码示例
  • oracle中记录和调集
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .