为了准确的计算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可以显示实际表空间的使用情况. | | |