LOB字段清空后再次利用其中的空间时发现空间浪费了很多,如何减少空间的浪费?

zcs_1 2003-08-27 03:05:03
一个表中具有三个blob类型的字段,每天都会像此表中插入大量的纪录(几万条),导致数据文件不断地扩大,并需要定期增加数据文件,导致硬盘空间紧张。为了保证每天的业务继续进行,每天允许清空一部分的blob字段,并将这部分blob连同主键转移到其他的数据库中。
清空blob字段的语句为
update blob_tab set blob_col=null where 满足条件的数据。

经过这样的操作后,再次向其中插入纪录后,发现清空的空间并没有完全利用,而是浪费了一部分,大约10%左右。如何能够避免空间的浪费?

表中的blob字段是单独放到一个表空间中的。
...全文
158 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGQDUCKY 2003-08-27
  • 打赏
  • 举报
回复
还有用语句
alter table <table_name> deallocate unused;

可以回收表,索引等对象中未使用的区。
LGQDUCKY 2003-08-27
  • 打赏
  • 举报
回复
数据库的存储是是一块块写的,pctfree和pctused参数是
用来对块存储空间进行管理的机制。用语句
alter table <table_name> pctfree 10 pctused 30
LGQDUCKY 2003-08-27
  • 打赏
  • 举报
回复
数据库的存储是是一块块写的,pctfree和pctused参数是
用来对块存储空间进行管理的机制。用语句
alter table <table_name> pctfree 10 pctused 30
zcs_1 2003-08-27
  • 打赏
  • 举报
回复
to LGQDUCKY(飘):
怎样才能修改一个blob字段的pctfree和pctused参数值。
blob字段是单独存在于一个表空间的,blob字段也是用所在的表的pctfree和pctused
参数吗?
zcs_1 2003-08-27
  • 打赏
  • 举报
回复
to jiezhi(浪子)
update blob_tab set blob_col=EMPTY_BLOB()和
update blob_tab set blob_col=NULL有什么区别吗?
将blob字段设置为NULL是彻底清空blob字段,而将blob字段设置为empty_blob()
将blob字段是初始化blob字段,此时的状态为empty,blob字段长度为0。
LGQDUCKY 2003-08-27
  • 打赏
  • 举报
回复
修改存储参数 PCTFREE 和 PCTUSED
PCTREE 是用来指定快中保留的最小空间比例。 10%
PCTUSED当块中已经使用的存储参数降到这个白分比,这个快
就被重新标识为可用 30%
jiezhi 2003-08-27
  • 打赏
  • 举报
回复
EMPTY_BLOB, EMPTY_CLOB函數-->
UPDATE blob_tab set blob_col= EMPTY_BLOB() where ...;
jiezhi 2003-08-27
  • 打赏
  • 举报
回复
EMPTY_BLOB, EMPTY_CLOB函數-->
UPDATE blob_tab set blob_col= EMPTY_BLOB() where ...;

17,378

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧