在UNIX下的Informix online中合理地组织表

众所周知,数据库由表构成,实际运用中,表是动态变化的,并且有的表增长的很快。当一个表在dbspace中有大于8个交错区间时,就会影响其访问效率,随着交错区间的进一步增多,甚至会恶化成为访问数据库的瓶颈,经常出现系统颠簸现象。具体表现为运行响应时间减慢、备份时间延长,用onstat- giof命令、glance(UNIX)命令查看磁盘I/O常居高不下。

这里提供两个查看表分配情况的命令:oncheck-pe和 oncheck-pc。前者产生dbspace的每个chunk中页面使用的详细清单;后者检查系统目录表的完整性,并对每个表的情况做汇总统计,包括创建时间、锁类别、区间总数、区间大小等。后者运行时间稍长。请仔细查看结果,特别是对那些经常做删除、插入、添加记录的表要注意,结果可能会让你大吃一惊。我曾经看到过一个表有460兆、67个区间,另一个430兆、57个区间,它们严重影响了系统的性能。对于小于兆级的表可不用理会。

通常,一个dbspace有多个chunk,用onstat-d可查看到。然而并非所有的chunk都得到合理分配,往往是有的chunk根本没用到(因为最初创建数据库时一般会分配充裕的空间),有的chunk中却拥挤不堪、表严重交错。为了平衡I/O,提高访问效率,可以将增长较快的表放入单独的一个 chunk中。但是很不幸,Informix-online却没有提供这样的命令。在此介绍个巧妙的方法,先来看看Createtable这个简单的命令,它后面可带extentsizeextent-size和nextsizenext-size两参数,前者指定创建表的初始区间大小,后者指定当初始区间充满后,扩展区间的大小,单位是KB。如下语句:

Create table test
(T1 char(10)
T2 char(20)
)
extent size 80000
next size 500

该语句建立表test的初始空间有80兆,如数据充满后每次再分配500K的空间。

lnformix中创建表时的空间分配策略是,先给表找一个连续的、足够大的空间。那么我们就可以利用这点,问题会很容易被解决。假设存在一个 dbspace,它有两个chunk,第二个空闲。让我们来把一些增长较快的表放入第二个chunk中。第一步:备份数据库。第二步:删除增长较快的表中的无用记录,再把它unload出来。第三步:drop需要重建的表。第四步:用onstat-d查看chunk1中有多少个空闲页面,设为n个。第五步:创建一个表test,设置其extent-size稍小于n*m,m为每页的大小,通常是2K、4K。第六步:用onstat-d查看chunk2是否仍旧空闲,即肯定上一步的test表创建在chunk1中,否则删除test表,分配一个更小的extent-size重建test表。第七步:创建你想要建的表设为Tb,请注意设定合理的extent-size值,它最好稍大于现在Tb表所占的总空间。此时Tb肯定是建在chunk2中了!因为 Informix在chunk1中找不到合适的空间。最后记住删除test表。如果您的数据库只有一个chunk,那么第四、第五步不用做。这同样有助于减少表交错。

另外,创建此类表的索引时,在Createindex后可加上参数fillfactor10,它决定在建立索引时预留90%的空间,这对经常更新、增长速度快的表很有好处,它使得其索引在一定空间内连续存放,同样有助于提高访问效率。系统默认值是90。在创建表完成之后, load数据之前,最好关闭日志,这有助于缩短load数据的时间。

时间: 2024-09-16 06:43:09

在UNIX下的Informix online中合理地组织表的相关文章

UNIX下的Informix online中合理地组织表

众所周知,数据库由表构成,实际运用中,表是动态变化的,并且有的表增长的很快.当一个表在dbspace中有大于8个交错区间时,就会影响其访问效率,随着交错区间的进一步增多,甚至会恶化成为访问数据库的瓶颈,经常出现系统颠簸现象.具体表现为运行响应时间减慢.备份时间延长,用onstat- giof命令.glance(UNIX)命令查看磁盘I/O常居高不下. 这里提供两个查看表分配情况的命令:oncheck-pe和 oncheck-pc.前者产生dbspace的每个chunk中页面使用的详细清单:后者检

运行于Unix下非常优秀的Web服务器 Zeus

Zeus是一个运行于Unix下的非常优秀的Web Server,据说性能超过Apache,是最强的Web Server之一 由于Zeus的中文介绍非常少,很多管理员不知道这个超级Web Server,有些知道的苦于中文安装说明很少, 下面的安装环境 FreeBSD4.9,更新了源代码树,重新编译了内核和系统,ports最新!进入系统su变成root 1.安装MySQL cd /usr/ports/databases/mysql323-server make install make clean

Linux/Unix下ODBC的安装、配置与编程

odbc|unix|编程 Linux/Unix下ODBC的安装.配置与编程 齐亮 (cavendish@eyou.com) 2002 年 7 月 本文主要内容是介绍ODBC的简单原理,以及如何在Linux/Unix下进行ODBC的安装.配置与编程. 一. ODBC原理 ODBC 是Open Database Connect 即开放数据库互连的简称,它是由Microsoft 公司于1991 年提出的一个用于访问数据库的统一界面标准,是应用程序和数据库系统之间的中间件.它通过使用相应应用平台上和所需

SCO UNIX下磁带机的安装与备份

unix|备份 SCO UNIX 下磁带机的安装与备份(一) 由于工作的原因,使用磁带机备份数据.在实现过程中总结了一些经验,供大家参考. 服务器是IBM PC Server 250(双机+阵列柜),操作系统是SCO unixware 7.1.1,由于是金融系统,还安装了双机软件GDS,在盘阵上安装了SYBASE11.9.4和金融系统应用,现在有两个应用库:MBFEWKDB,MBFEHISDB,现在要备份这两个应用库到磁带机上. 一.磁带机的安装   1,  SCSI信息查询:        s

unix下远程访问oracle

oracle|unix|访问 今天从unix下远程登录进入oracle,现记录下. 因为在公司都是用双IP进入数据库服务器的,所以用客户端都连不上.只好先telnet 到联通服务器IP,然后再 1.telnet? dbhostIP user/password 2.$ORACLE_HOME/bin sqlplus dbuser/dbpwd@dbname 然后就进入了sqlplus操作界面,其它地方均和windows中操作相同. ed编辑缓存命令和用vi编辑时是一样的.

如何在Unix下使用find命令

例如我们知道一个Linux文件大小为1,500 bytes,那么我们可是使用如下命令来查询 find / -size 1500c,字符 c 表明这个要查的文件的大小是以bytes为单位. 如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查模式来解决. 例如我们输入find/ -size +10000000c 这个命令,则标明我们指定系统在根目录中查出大于10000000字节的文件并显示出来.命令中的"+"是表示要求系统只列出大于指定大小的文件,而使用"-

如何在Unix下使用Makefile编译程序

makefile关系到了整个工程的编译规则.一个工程中的源文件不计数,其按类型. 功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令. makefile带来的好处就是--"自动化编译",一旦写好,只需要一个make命令,整 个工程完全自动编译,极大的提高了软件开发的效率.make是一个命令工具,是一

Unix下Web服务器Zeus介绍

Zeus是一个运行于Unix下的非常优秀的Web Server,据说性能超过Apache,是最强的Web Server之一 由于Zeus的中文介绍非常少,很多管理员不知道这个超级Web Server,有些知道的苦于中文安装说明很少, 下面的安装环境 FreeBSD4.9,更新了源代码树,重新编译了内核和系统,ports最新!进入系统su变成root 1.安装MySQL cd /usr/ports/databases/mysql323-server make install make clean

Unix下如何使用awk

1.什么是awk 你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度.awk是什么?与其它大多数UNIX 命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是具有独立意义的英文单词,也不是几个相关单词的缩写.事实上,awk是三个人名的缩写,他们 是:Aho.(Peter)Weinberg和(Brain)Kernighan.正是这三个人创造了awk---一个优秀的样式扫描与处理工具. AWK的功能是什么?与sed和g