楼主: eksmile

[讨论] 有条件删除海量数据时,涉及的日志及空间问题

[复制链接]
论坛徽章:
0
21#
 楼主| 发表于 2015-10-27 15:04 | 只看该作者
jieyancai 发表于 2015-10-27 14:20
数据库调到简单模式关系不大

你好,我已经将数据移到临时表,然后TRUNCATE了目标表,通过  EXEC sp_spaceused '目标表',确认目标表已经没用占用空间了。
可是硬盘空间并未释放。
查看了数据库文件信息,截图如下,发现那三个分区的初始大小仍然与之前一样。
这个初始大小,应该是平时维护记录时自增上去的。
可以直接在这里修改初始大小值吗?




使用道具 举报

回复
论坛徽章:
190
生肖徽章:狗
日期:2006-11-23 04:26:03生肖徽章:羊
日期:2007-09-26 17:08:21生肖徽章:马
日期:2007-09-26 17:08:49授权会员
日期:2007-12-31 19:14:41生肖徽章2007版:牛
日期:2008-03-28 10:02:30奥运会纪念徽章:柔道
日期:2008-04-30 16:28:44奥运会纪念徽章:垒球
日期:2008-05-12 21:28:28奥运会纪念徽章:体操
日期:2008-06-26 10:00:41奥运会纪念徽章:沙滩排球
日期:2008-07-27 12:41:59奥运会纪念徽章:艺术体操
日期:2008-07-30 11:09:47
22#
发表于 2015-10-27 15:09 | 只看该作者
本帖最后由 jieyancai 于 2015-10-27 15:11 编辑
eksmile 发表于 2015-10-27 15:04
你好,我已经将数据移到临时表,然后TRUNCATE了目标表,通过  EXEC sp_spaceused '目标表',确认目标表已 ...

看看常规中,数据库大小和可用空间为多少?或者命令:exec sp_spaceused
如果数据库使用率为>50%就没必要收缩。收缩的目的只是为了节省空间,但将来如果数据量增长还是会需要扩大数据文件的。所以如果磁盘空间足够的情况下,就不要去做收缩的动作。

使用道具 举报

回复
论坛徽章:
0
23#
 楼主| 发表于 2015-10-27 15:17 | 只看该作者
jieyancai 发表于 2015-10-27 15:09
看看常规中,数据库大小和可用空间为多少?或者命令:exec sp_spaceused
如果数据库使用率为>50%就没必要 ...

数据库大小:1408495 MB
可用空间:362477 MB
使用了约74%

这几个分区就是用来存储历史数据的。这次处理完,基本上以后不会再向里面添数据了。那它们占用了这么多空间,不就是浪费了吗?
350G存储的是之前24个小时的数据,现在只存储一个小时的,那估计也就需要 350G/24 = 14.58G。
至少也浪费了300G的空间啊。

除了收缩整个数据库,就没有其它的办法了吗?

使用道具 举报

回复
论坛徽章:
0
24#
 楼主| 发表于 2015-10-27 15:19 | 只看该作者
jieyancai 发表于 2015-10-27 15:09
看看常规中,数据库大小和可用空间为多少?或者命令:exec sp_spaceused
如果数据库使用率为>50%就没必要 ...

exec sp_spaceused 已经全是0。

表已经不占用空间了。我TRUNCATE掉了。但是这个数据文件,还占用着空间。

使用道具 举报

回复
论坛徽章:
190
生肖徽章:狗
日期:2006-11-23 04:26:03生肖徽章:羊
日期:2007-09-26 17:08:21生肖徽章:马
日期:2007-09-26 17:08:49授权会员
日期:2007-12-31 19:14:41生肖徽章2007版:牛
日期:2008-03-28 10:02:30奥运会纪念徽章:柔道
日期:2008-04-30 16:28:44奥运会纪念徽章:垒球
日期:2008-05-12 21:28:28奥运会纪念徽章:体操
日期:2008-06-26 10:00:41奥运会纪念徽章:沙滩排球
日期:2008-07-27 12:41:59奥运会纪念徽章:艺术体操
日期:2008-07-30 11:09:47
25#
发表于 2015-10-27 15:19 | 只看该作者
eksmile 发表于 2015-10-27 15:17
数据库大小:1408495 MB
可用空间:362477 MB
使用了约74%

可以选择收缩那几个数据文件。

使用道具 举报

回复
论坛徽章:
2
沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
26#
发表于 2015-10-28 09:23 | 只看该作者
eksmile 发表于 2015-10-27 13:57
select into 到临时表后, 把目标表truncate了,然后从临时表导入回目标表时,不能用select into。而bulk ...

为什么不能用select into了?你把原来那个表整个干掉就不可以了吗,反正被你truncate后是个空表。

使用道具 举报

回复
论坛徽章:
2
沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
27#
发表于 2015-10-28 09:26 | 只看该作者
eksmile 发表于 2015-10-27 11:05
我查了一下,简单模式的描述是“自动回收日志空间以减少空间需求,实际上不再需要管理事务日志空间。简单 ...

在我的经验来看,如果是简单模式,只有在大量delete时或者索引重构时才会导致日志文件膨胀。

使用道具 举报

回复
论坛徽章:
0
28#
发表于 2015-10-28 11:50 | 只看该作者
这个可以使用分区交换功能啊,把临时表直接交换到分区表就可以了

使用道具 举报

回复
论坛徽章:
0
29#
 楼主| 发表于 2015-10-28 13:49 | 只看该作者
p2v5 发表于 2015-10-28 09:23
为什么不能用select into了?你把原来那个表整个干掉就不可以了吗,反正被你truncate后是个空表。

select into 的那个表,是自己在数据库的默认分区创建一个表。

我试了一下,如果我提前创建好那个表,然后SELECT INTO 已创建表,会提示对象已经存在。

使用道具 举报

回复
论坛徽章:
0
30#
 楼主| 发表于 2015-10-28 13:50 | 只看该作者
ouygui 发表于 2015-10-28 11:50
这个可以使用分区交换功能啊,把临时表直接交换到分区表就可以了

现在才知道,同一个分区。被四张表用了。

这种分区交换,只适合于,那个分区被一张表使用的情况吧。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表