假设我要在Informix数据库中创建下表。
create table table_name
(
col1 date,
col2 smallint,
col3 char(12),
col4 char(12),
col5 char(12),
col6 integer,
col7 integer,
col8 datetime year to second,
col9 datetime year to second,
col10 datetime year to second,
col11 datetime year to second,
col12 datetime year to second,
col13 CHAR(1),
col14 CHAR(1),
col15 CHAR(1)
) in db_space extent size ? next size ? lock mode row;
假设将要发生三种情况。
1.reference表,该表中将存储100000条记录
2.data表,每天添加记录数为1000
3.data表,每月添加记录数为100000
我对如何根据上述方案确定扩展区大小感到困惑。其背后的逻辑是什么?
答案 0 :(得分:1)
第一步是将列的大小相加,以确定每行使用多少空间-或创建一个虚拟表并从系统目录中获取大小。每行大小为93字节。还有一些插槽开销和页面开销。您每2 KiB页大约可获得20行,而每4 KiB页则可获得40行以上。对于实用的心理算术,忽略记录,并假设每页2000或4000字节,则将记录视为100字节。
方案1:100,000行,最小增长。
方案2:每天1,000行。
服务3:每天100,000条记录。
通常,不要对范围大小感到困惑。由于扩展区大小加倍,因此,如果选择的数字太小,Informix会通过自动分配较大的扩展区来进行补偿。如果发现下一个尺寸太大,则可以更改下一个尺寸。但是,这些大小都不是很大-如今,每年4 GB是服务器存储领域的零钱,即使这是SSD而不是旋转磁盘。您每年需要保持在TB的范围内,然后才需要担心太多。值得关注空间,但是不值得花费比我更多的算术计算。
不要忘记您的索引。
对Informix 12.10的IBM文档的某些引用: