• INFORMIX数据库重组改革系统效能






     

    作者 傅凯文/库柏信息   

     

    这篇文章引见 Informix Dynamic Server 数据重组对系统效能的影响和数据重组的流程步骤。

    序文

    应用过 Microsoft Windows 系列操纵系统的人,必然听过「磁盘重组」(disk defragment) 或是应用过操纵系统里内建的「磁盘重组器械」(Disk Defragmenter)。

    终究什么是磁盘重组呢? 为什么比较争论机磁盘会需求重组呢?

    系统在将数据写入磁盘时并无法确保数据可以写在一连的磁盘空间上;而磁盘上的数据涣散各处会高涨系统的整体效能。数据在涣散的情况下,要读写数据时,比较争论机必需一再搜寻散落在硬盘上的数据片断,把涣散的片断连起来,这时系统呼合时候就会年夜幅度地拉长。

    Windows 系列操纵系统供给了一公用序次「磁盘重组器械」,可以分析本机磁盘区并兼并涣散的档案及数据夹,让每个档案及数据夹都能只管即使各自占据磁盘区上单一且一连的空间。若档案或资料夹可以精致精美地贮存在一同而没有被分割,读取及写入磁盘的速度就会放慢;藉由兼并档案及数据夹,磁盘重组器械也可以兼并磁盘区的可用空间,裁减新档案组成涣散的情况。兼并涣散档案及数据夹的历程即称作磁盘重组。

    Informix 资料重组

    IBM Informix® Dynamic Server (以下简称 IDS) 数据库的磁盘办理从命别离磁盘以 extents 形式建构及存在,它亦有雷同数据涣散存在的成果。

    当一个 table 的数据时时增添,同一个 table 的 extents 必然会泛起雷同档案区块般涣散在磁盘各处的征象。早期建构的 table 因应用原始容积量 (default extent size),而形成 extents 微小而数量庞年夜。这样微小而数量庞年夜的 extents 使 IDS 必需一再搜寻散落在硬盘上的 extents ,把涣散的片断连起来以成就大批读取,这时 IDS 系统呼合时候就会年夜幅度地拉长。为临时规划这个成果,可以透过指令填补之后 extent 的大小,减慢 extent 块数增添的速度。

    ALTER TABLE table_name  MODIFY NEXT SIZE new_extent_size;

      new_extent_size 的单位为 Kilobytes (KB) 。 

    然则 ALTER TABLE 指令并不能规划先前曾经设置的 extents 做填补。为添加 IDS 数据库的磁盘办理从命,数据库办理职员 (DBA) 必需定期针对成长疾速的table做「IDS数据重组」,在执行 IDS 数据重组后将彻底根治微小而数量庞年夜 extents 的成果;在年夜都的情况下,对数据库存取的效能也会增添。那要若何执行「IDS 数据重组」呢? 所谓的「IDS 数据重组」,是指 table level 的 extents 能一连摆放在一同。重组的步骤如下:

    Informix 数据重组步骤

    1.起首为了确保不会有别的人延续存取此 table ,先将此 table 更名为另一个新名字。

    2.凭据原 table schema ,推算出而今此 table 的容量。此容量值加上 table 的成长率,即为新 table 的 first extent 大小。(举例来说, table A 的一笔资料为 1.5 KB ,而今 table A 有一万笔资料,所以而今 table A 的容量就有 15 MB 。然则为了让 table A 能延续终年夜,可以将 first extent 设为 18~20 MB。

    CREATE TABLE table_name(    …)EXTENT SIZE first_extent_size NEXT SIZE next_extent_sizeWITH LOGLOCK MODE ROW;

    3.应用 table schema 加上刚才算出来的 first extent 大小来创立新的 table first_extent_size 和 next_extent_size 的单位皆为 Kilobytes (KB)。

    4 透过 INSERT INTO ... SELECT ... 的要领,将原本 table 的数据复制一份到新创立的 table中。

    INSERT INTO new_table_name SELECT * FROM table_name;

    5. 结尾将新创立的 table 更名回原 table 的名字,就可以让应用者延续应用了。

    经历分享

    所以当一 table 的 extents 块数接近下限值时,为了不影响数据后续的新增,乖戾发起尽快安排时候做数据重组的举动。在普通的情况下,定期针对各 tables 做数据重组的举动为数据库办理职员的责任。为了让系统效能可以领会探问探望提拔,针对伟大读写次数最频繁的 table 先做重组,会是一个志向的选择。

    结论

    正如先前步骤所提到,这种重组做法最年夜的缺点就是必需限定应用者临时不存取该 table 。IBM 在线的文件有提到应用 UNLOAD/LOAD 的器械复制数据,这种做法在特别的编码数据时有能够会影响数据的精确性;所以照样发起应用 INSERT INTO ... SELECT ... 的要领。在 IDS 中,对 table 的 extents 的块数有必然的下限定。普通来说,超过 210 个 extents 的时分有能够会无法再设置新的 extent 给该 table ,将会招致数据无法延续新增。

    (注:在 AIX 呆板上的 extents 块数下限为 450 摆布。)

    参考数据

    -   磁盘重组器械概不雅观

    -   IBM Informix Dynamic Server Performance Guide

     



    版权声明: 原创作品,容许转载,转载时请务必以超链接形式标明文章 原始情由 、作者信息和本声明。否则将追究司法责任。

  • 相关阅读:
    DS博客作业06——图
    DS博客作业05——树
    DS博客作业03——栈和队列
    DS博客作业02--线性表
    DS博客作业01--日期抽象数据类型设计与实验
    C语言课设——电影院选票系统
    C语言博客作业06——结构体&文件
    C语言博客作业05——指针
    DS博客作业08--课程总结
    DS博客作业07--查找
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975301.html
Copyright © 2020-2023  润新知