不多说直接进行操作,验证在原表上增加列,表大小变化情况
--原表大小
Command> call ttsize('XULQ.XULQ_COUNTER');
< 883840690.000000 >
1 row found.
--842.8961658477783 --842M
--原表行数
Command> select count(*) from XULQ.XULQ_COUNTER;
< 4238689 >
--增加列
Command> ALTER TABLE XULQ.XULQ_COUNTER ADD product_ID TT_BIGINT DEFAULT 0;
--变更后表大小
Command> call ttsize('XULQ.XULQ_COUNTER');
< 951662452.000000 >
1 row found.
--907.5760383605957 --907M比原来(842M)大了64M
--变更后表行数
Command> select count(*) from XULQ.XULQ_COUNTER;
< 4238689 > --行数未发生变化。
--表结构
Command> DESC XULQ.XULQ_COUNTER;
create table XULQ.XULQ_COUNTER (
COUNTER_ID TT_BIGINT NOT NULL,
KEY_ID TT_BIGINT NOT NULL,
ATTR_ID TT_INTEGER NOT NULL,
MIN_CYCLE_ID TT_BIGINT NOT NULL,
MAX_CYCLE_ID TT_BIGINT NOT NULL,
FREE_VOLUME NUMBER(24,7),
USAGE_VOLUME NUMBER(24,7),
OVER_VOLUME NUMBER(24,7),
TARIFF_PLAN_ID TT_INTEGER,
CDR_END_TIME TT_TIMESTAMP,
SUBS_ID TT_BIGINT NOT NULL,
CHANGE_TIME TT_TIMESTAMP,
SYNC_FLAG TT_TINYINT DEFAULT 1,
ATTR_ADD_CODE VARCHAR2(30 BYTE) INLINE DEFAULT '*',
PRODUCT_OID TT_BIGINT DEFAULT 0,
PRODUCT_ID TT_BIGINT DEFAULT 0); --新增列
create unique index XULQ.PK_XULQ_COUNTER on XULQ.XULQ_COUNTER
(KEY_ID, COUNTER_ID);
--导出数据
ttBulkCp -o -s "|" "dsn=xulq;TTC_Timeout=0" XULQ.XULQ_COUNTER SUBSCRIBER.xulq_533_01_v.unl >/tmp/exp.XULQ_COUNTER.log
[ttacct@c4csbds15] /logds/bak> cat /tmp/exp.XULQ_COUNTER.log
4238689/4238689 rows copied
--新建测试表便于将数据导入
create table XULQ.XULQ_COUNTER_XULQ (
COUNTER_ID TT_BIGINT NOT NULL,
KEY_ID TT_BIGINT NOT NULL,
ATTR_ID TT_INTEGER NOT NULL,
MIN_CYCLE_ID TT_BIGINT NOT NULL,
MAX_CYCLE_ID TT_BIGINT NOT NULL,
FREE_VOLUME NUMBER(24,7),
USAGE_VOLUME NUMBER(24,7),
OVER_VOLUME NUMBER(24,7),
TARIFF_PLAN_ID TT_INTEGER,
CDR_END_TIME TT_TIMESTAMP,
SUBS_ID TT_BIGINT NOT NULL,
CHANGE_TIME TT_TIMESTAMP,
SYNC_FLAG TT_TINYINT DEFAULT 1,
ATTR_ADD_CODE VARCHAR2(30 BYTE) INLINE DEFAULT '*',
PRODUCT_OID TT_BIGINT DEFAULT 0,
PRODUCT_ID TT_BIGINT DEFAULT 0);
create unique index XULQ.PK_XULQ_COUNTER_XULQ on XULQ.XULQ_COUNTER_XULQ
(KEY_ID, COUNTER_ID);
--导入数据
ttBulkCp -i -xp 10000 -s "|" "dsn=xulq;TTC_Timeout=0" XULQ.XULQ_COUNTER_XULQ SUBSCRIBER.xulq_533_01_v.unl >/tmp/imp.XULQ_COUNTER.log
SUBSCRIBER.userinfo_533_01_v.unl:
4238689 rows inserted
4238689 rows total
--查询新建表行数
Command> select count(*) from XULQ.XULQ_COUNTER_XULQ;
< 4238689 >
1 row found.
--查询新建表大小
Command> call ttsize ('XULQ.XULQ_COUNTER_XULQ');
< 917751668.000000 >
1 row found.
--此处虽然比增加加字段后(951662452)减小了33M,但仍然有31M的增长。由此可知增加列仍然会使表增加一定的大小。
接着验证在XULQ.XULQ_COUNTER_XULQ增加列
Command> call ttsize ('XULQ.XULQ_COUNTER_XULQ');
< 917751668.000000 >
1 row found.
Command>
Command> select count(*) from XULQ.XULQ_COUNTER_XULQ;
< 4238689 >
1 row found.
Command> ALTER TABLE XULQ.XULQ_COUNTER_XULQ ADD ATTR_ADD_ID VARCHAR2(30) DEFAULT '*';
Command> select count(*) from XULQ.XULQ_COUNTER_XULQ;
< 4238689 >
1 row found.
Command> call ttsize ('XULQ.XULQ_COUNTER_XULQ');
< 1121216566.00000 > --比917751668增加了194M
1 row found.
--添加两列
Command> ALTER TABLE XULQ.XULQ_COUNTER_XULQ ADD ATTR_ADD_ID1 VARCHAR2(30) DEFAULT '*';
Command> ALTER TABLE XULQ.XULQ_COUNTER_XULQ ADD ATTR_ADD_ID2 VARCHAR2(30) DEFAULT '*';
Command> select count(*) from XULQ.XULQ_COUNTER_XULQ;
< 4238689 >
1 row found.
Command> call ttsize ('XULQ.XULQ_COUNTER_XULQ');
< 1528146362.00000 > ---又增加了388M
1 row found.
由此,可见增加列,均会使表大小出现线性增长。