create table TEST_BIG
(
ID NUMBER(10)
)
tablespace QD_INTER
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 64K
next 64K
minextents 1
maxextents unlimited
pctincrease 0
);BEGIN
FOR i IN 1 .. 100000
LOOP
INSERT INTO test_big VALUES (9999999999);
COMMIT;
END LOOP;
END;SELECT SUM(BYTES)/1024/1024 FROM User_Extents WHERE segment_name=upper('test_big');1.3125怎么和我想象的占用空间不一样啊
(
ID NUMBER(10)
)
tablespace QD_INTER
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 64K
next 64K
minextents 1
maxextents unlimited
pctincrease 0
);BEGIN
FOR i IN 1 .. 100000
LOOP
INSERT INTO test_big VALUES (9999999999);
COMMIT;
END LOOP;
END;SELECT SUM(BYTES)/1024/1024 FROM User_Extents WHERE segment_name=upper('test_big');1.3125怎么和我想象的占用空间不一样啊
解决方案 »
- 帮忙,这段SQL语句怎么写?
- oracle8.1.7的问题
- 如何优化SQL语句?
- 这个关于日期的SQL查询语句怎么样
- exists语句不能用在if then 中间????为什么?
- 请教高手:一般在数据库里面写存储过程和函数需要写哪些呢?急啊!在线等
- 已经实现了应用程序不装oracle客户端连接oracle服务器,但还有个问题,大家看看。
- 如保用SQL语句创建一个用户,同时使这个用户有DBA的权限,谢谢高手帮忙!!!1
- 问题解决有100分给,各位高手怎么才能在做应用程序的安装程序时“把ORACLE客户端”打进安装程序中,使其客户在安装时无需再安装ORACLE客
- 为什么第一次对ORACLE库操作时速度很慢(估计要等5秒左右)?以后就快了。
- 数据库的访问
- 求高手指点个查询统计语句的写法,求高手帮忙
然后再 100000*10/0.9/1024/1024 什么的吧 也不是很了解其中的机制谢谢大家了哦~
不过我觉得楼主通过计算tablespace增长的方式计算NUMBER的实际存储占用是不科学的。
其实数据库存储的复杂程度是远远大于6Byte+6byte=12byte的。
因为需要维护内模式的比如说 Btree的数据结构、索引、块等等。
就像 storage
(
initial 64K
next 64K
minextents 1
maxextents unlimited
pctincrease 0
); 指出的
第一个区 64k, 第二个 64K
以后每次增加 0%(pctincrease 0)
以8k块来计算,总共8192个字节,块系统开销大概96个字节,可用空间为8096个字节。pctfree = 10, 可用8096*0.9=7286 个字节。每个块可容纳 7286/12 = 607 行。一个extents容纳607*8= 4856行。100000行需要100000/4856 = 21个extents,总共占用空间 1.3125M。 和你查出来的空间使用一致。