为了准确的计算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可以显示实际表空间的使用情况.
(本文已被浏览 4049 次)
|
|