免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1031 | 回复: 0
打印 上一主题 下一主题

Bradmark---最大化数据库性能与可用性 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-22 10:49 |只看该作者 |正序浏览
技术白皮书:DBControl Online 基于Oracle的数据库管理
                                  用在线重组确保现代数据库的服务标准(一)
介绍
     在电子商务驱动现代业务应用的设计和需求,高性能和高可用性的数据库计算现已成为服务的标准。这个现代性能标准是与宕机时间的高昂成本相关的。为这种环境开发的管理技术要求在做标准维护任务时,对系统几乎不能有影响。
    在线重组将极大地有助于维护全部数据库的可用性,并且潜在地减少或消除计划中的宕机时间。这反过来将会增加应用的投资回报率(ROI)和降低拥有成本(TCO)。在线重组也将给予管理员空前的便性,在用户完全正常访问数据库的情况下,去修改表的物理属性和更改数据和表的结构。数据库重组的标准方法,是开发完善的操作系统和数据库脚本,来自动化重组或者把它们压缩到一个计划的宕机维护时间里。当然这是通常的方法,有宕机时间、管理和开发的成本。而且,如果这个重组方法失败了,就要等待下一次宕机机会的出现。
    通常明智的做法是设置正确的初始表空间,从而避免重组。但是即便是最小心翼翼设置的表,在条件不断变化的情况下,也可能需要修改存储参数来获得最佳的空间利用率。
重组的原因
    表及其依存对象,是重组的目标,为了达到空间的最有效利用,避免性能问题,或者适应新的硬
件构架。考虑以下几个情况:
数据存取     
     数据存取的目的是减少对在线数据空间的需求和通过压缩数据集合来提升应用的性能。单纯的存取不会带来这些好处,重组才是下一个关键的步骤,其目的是实现节省空间和存取过程的性能优化。
     大量的存取和删除操作,在数据表段中留下了碎片。即使数据最重要的部分已经被从表中删除了,内部的自由空间也不会被回收到数据库用于其他技术白皮书:DBControl Online 基于Oracle的数据库管理对象。重组可以压缩数据段,回收碎片为数据库空间。
     存取之后,表的水位线(HWM)保持不变。完整的表扫描操作,比如报表,仍然要遍历整个表段,即使多数地 方都是空的。重组降低了表的水位线,这样就提升了这些操作的性能,并且获得数据压缩的全部收益。
空间回收
     当表空间中的自由空间处于数据稳健的末尾时,数据稳健可以改变大小,自由空间可以回收到操作系统中做为它用。然而,如果自由空间处于表空间的中部,就需要重组来把数据压缩,把自由空间移到数据稳健的末尾。回收自由空间到操作系统,可以使昂贵的磁盘系统获得更高效的利用,并且他延长了购买硬件的生命周期。
表与初始存储参数设计相背离
      当表被初始创建时,数据库管理员必须估算下边存储参数。
块空间利用参数
PCTFREE   定义了在一个块中用于在现有行上进行更新的可用空间数量
PCTUSED  设置块上的空间阈值防止更新异常。如果数据块的可用率降低这个参数,这块就会拒绝更新。
INITRANS 定义了一个数据块内部可以并发更新行的初始事务数。
MAXTRANS 定义了一个数据块内部可以并发更新行的最大事务数。
分区分配参数
INITIAL  设置了初始表的分区大小。
NEXT   如果没有应用PCTINCREASE参数,本参数就定义了已分配的表分区大小
MINEXTENTS   表中应该分配的分区最小数目。
MINEXTENTS   表中可以分配的分区最大数目。
PCTINCREASE  第三个和每个连续的分区依赖于混合空间的增量,它等于NEXT参数和
PCTINCREASE值的乘积。
     既然上述参数都是在创建表时估算的,它们就易于发生修改。一旦产品数据已经存入表中,关于数据更新大小和频率的真实行为就确定了。通过上述分析,存储参数可以被优化以满足实际性能需求,而优化就需要做重组。
忠于行业的“最佳实践”
    从Oracle 8i开始,最佳实践包括本地管理表空间的应用。这考虑到了通过设置标准的大小来实现自动设定所有新分区的大小,以及删除与自由分区分片之间的任何关联。本地方法通过使用位图保留了分区跟踪,而不再需要访问数据字典。通过本地化管理表,可以获得存储,性能和管理的高效率。
     除了本地管理表空间以外,避免空间低效使用的第二个方法,是通过设置分区存储参数PCTINCREASE为0,并使INTIAL与NEXT相等来实现的。这是考虑到分配统一的分区和可预见的调整大小需求。
    具有相似大小分区的表可以共享一个根据标准分区分配要求设计的表空间。这种分段是考虑到每个表空间上分配相同的分区,依赖于数据表被当成小、中还是大表。
消除行链接和行迁移
      行链接的发生,是因为在插入或更新行时,新行比原来的数据块大。当行链接发生时,Oracle把该行的数据分成两部分,以适应现有链中为该段预留的数据块,行链接是数据块大小不兼容造成的综合结果。而行迁移的发生,是当更新行时,它不适应原有的数据块,Oracle把该行迁移到一个新的数据块。Oracle必须把原来的行和包含迁移行的新数据块链接起来。行链接和行迁移都会降低性能,并且潜在浪费数据块空间。
对大表做分区
     对大表做分区,将极大地提升表的可管理性,使DBA能够把表和索引分成较小的,独立的单元。它把维护过程(如表分析和在线备份)分成高效的、可管理的子任务。
转换为索引表(IOT)
   索引表(IOT)的内容是按照二叉树进行组织的,索引和表是整合到一个数据库对象中,所以它们没有分离存储的需求。索引表可以节省空间,把查询消耗整合到一个对象中,提高基于主键的查询性能。为了获得性能和存储空间的节省,做重组是值得的。
传统重组方法
   上述的案例是重组一个表的充分理由,随之而来的是如何权衡重组的潜在负面影响与它所带来的性能好处。传统的重组方法伴随着对一些风险和时间的考虑,这样次要的性能问题就可能被忽略了。传统表重组的一般性原则如下。
      离线重组必须策划周详,特别是在许多联机事务处理(OLTP)环境中,维护窗口很小的情况下。任何错误如果不能得到迅速补救,就会带来巨大的经济负担,并对已经安排好的时间计划造成额外的压力。当今的数据库表都很大,并且对可用性要求高,这样产生的一个关键需求就是可以使系统正常工作时间和性能最大化的在线重组能力。
离线重组通常有如下几个步骤:
   表空间离线。
   用优化的存储参数创建一个新的临时表(TT1)。
   删除原始表(T1)。
   重命名表(TT1)为(T1)。
   重建索引和约束。
   重建依赖。
   表空间上线。
离线重组一旦在上述过程中发生失败,就需要很长时间才能恢复,特别是在数据已经完全从数据库卸载之后。
在线重组的好处
    企业级业务应用必须在任何时区对任何用户都是可用的。如果能够在线做重组,数据流没有中断,就提供了空前的时间优势。多数对SAP及财务环境的服务等级协议要求99.9%的可用时间,只留一个微不足道的维护窗口。由于宕机时间的成本,在线重组就如同在线备份一样有价值。有了在线重组,对表的重组过程就没有时间约束了。



                                                                    联系人:桉桎  周方军
                                                                    联系电话:010--62263633
                                                                    MSN:anzhi5188@hotmail.com
                                                                    http://ww.rosantech.com
                                                            东方融尚科技有限公司      Bradmark---中国地区总代理
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP