Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104594823
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-20 21:17:37


为了准确的计算informix的表空间,极佳的做好的磁盘的I/O和表空间的利用,主要从如下几个方面考虑表空间的计算:

确定每个索引的长度。 
确定索引的总长度。 
计算索引开销。 
确定表的初始大小。 
索引空间需要的大小。 
将索引空间转换成千字节(kilobyte)。 
确定以字节为单位的页大小;用它减去 28 就可以获得可用的页面空间。 
确定行的长度。 
确定一页上可以完整放置多少行。 
确定初始表的数据页的数目。 
初始表中数据页面所需的空间大小。 
将数据大小转换成千字节(kilobyte)。 
确定以千字节(kilobyte)为单位的初始区段大小。 
确定表的增长。 
下个区段的大小。 
 
举例:
现在,让我们来浏览一个例子。根据这个指南为 item 表一步步估算第一个和第二个区段大小。以下是 item 表的结构:
列          数据类型         长度(以字节为单位)*
Item_num smallint 2
Order_num integer          4
Stock_num smallint 2
Manu_code char(3)          3
Quantity smallint 2
Total_price       money(8) 5
现在,让我们假设该表在 order_num 上有一个索引,而且还有 stock_num 与 manu_code 上的复合索引。该表最初有 20,000 行,几个月内,它会增加 35,000 行。
每项的计算过程为:
步骤 描述                          计算(以字节为单位)
1       确定每个索引长度           order_num 上的索引 = 4+9 = 13     
                                         stock_num 和 manu_code 上的索引 = 2+3+9 = 14
2       确定索引的总长度                 13 + 14 = 27 
3       计算索引开销                     27 * 1.25 = 33.75
4       确定表的初始大小                     20,000 行
5       所需的总的索引空间                 20,000 * 33.75 = 675,000
6       将索引空间转换成千字节(kilobyte)  67,5000/1,024 = 660 (Kbytes)
7       确定以字节为单位的页大小
        减去 28 以获得页面开销              2,048 - 28 = 2,020 
8       确定行的长度                        2 + 4 + 2 + 3 + 2 + 5 + 4 = 22
9       确定每页有多少整行                  2020/22 = 91
10      确定初始表的数据页面数目            20,000/91 = 220 
11      数据所需的总空间                 220 * 2,048 = 450,560
12      将数据大小转换成千字节              450,560/1,024 = 440 
13      确定初始区段大小                    440 + 660 = 1,100 
14      确定表的增长                        增加 35,000 行
15      估算下个区段的大小                  所需的索引空间 = 35,000 * 33.75 = 1,181,250
                                            转换成 Kbytes = 1,181,250/1024 = 1,154
                                            所需的附加数据页 = 35,000/91 = 385
                                            转换成 bytes = 385 * 2,048 = 788,480
                                            转换成 Kbytes = 788,480/1,024 = 770
                                            所需的总空间 = 770 + 1,154 = 1,924
基于这些计算,就可以确定该表所需的第一个和下一个区段的大小,现在,您可以在 CREATE TABLE 语句中指定第一个和下一个区段的大小.CREATE TABLE item(
Item_num  smallint,
Order_num  integer , 
Stock_num  smallint,
Manu_code  char(3) ,
Quantity  smallint,
Total_price  money(8)) 
EXTENT SIZE 1100 NEXT SIZE 1924; 
通过以上计算可以基本上准确的计算出extend和next extend的大小,并充分利用.oncheck -pt dbname:tabname可以显示实际表空间的使用情况.
阅读(638) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~