sql数据库收缩问题

zhangzhiyuan303 2012-10-11 10:28:58
数据库不超过10张表,有三张在两万条数据左右,其他都没什么数据,出来后要160M.
无奈现在的虚拟主机都是送个100-200M的数据库,所以呀,哪位指点一下,让我把这160M收缩一下(sql自带的截断日志,收缩我知道的)。估计要从字段类型方面入手?或者其他方面,总之能减到100M下最好。
...全文
115 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQL77 2012-10-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
感谢各位:
找到一个函数,实现查询表使用的空间。通过它发现了问题所在。ntext(nvarchar(MAX))类型的数据过大。
现在应该需要一个类似压缩/解压函数 就能解决问题。但是sql里边没找到。有知道的指点一些。

查询表空间函数:exec sp_spaceused 表名
[/Quote]
没有啥压缩字段的函数。
你那些列存储的东西过大。就专门处理那些列。看能否用其他来代替。
否则换个租个更大空间吧。
zhangzhiyuan303 2012-10-11
  • 打赏
  • 举报
回复
感谢各位:
找到一个函数,实现查询表使用的空间。通过它发现了问题所在。ntext(nvarchar(MAX))类型的数据过大。
现在应该需要一个类似压缩/解压函数 就能解决问题。但是sql里边没找到。有知道的指点一些。

查询表空间函数:exec sp_spaceused 表名
夜予 2012-10-11
  • 打赏
  • 举报
回复
数据是要增长的,不可能一直收缩后保持在200M内,暂时的还行,长期就不太靠谱了!
xuam 2012-10-11
  • 打赏
  • 举报
回复
USE Luxim_Test_DB;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE DB_NAME
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 10 MB.
DBCC SHRINKFILE ([DB_NAME_log], 10);
GO
-- Reset the database recovery model.
ALTER DATABASE DB_NAME
SET RECOVERY FULL;
GO
發糞塗牆 2012-10-11
  • 打赏
  • 举报
回复
1、检查字段数据类型,比如datatime,如果业务允许,换成smalldatetime,可以减少一半存储空间。即换成小类型。
2、如果不是重要的业务,把日志收缩截断后,设为简单模式。
汤姆克鲁斯 2012-10-11
  • 打赏
  • 举报
回复
DBCC SHRINKFILE

收缩数据库文件和日志文件,能释放一些空间出来

但是突破200 是很容易的,如果你的数据量增量太大,那只好付费了。

發糞塗牆 2012-10-11
  • 打赏
  • 举报
回复
其实你可以现在虚拟机里面弄完在放到正式环境啊
zhangzhiyuan303 2012-10-11
  • 打赏
  • 举报
回复
多谢楼上这位,我目前阶段系统处于实验阶段,有点自己业余闹着玩的意思,租用虚拟空间最大的数据库也就200M,超过以后价格涨的厉害。改下程序省点钱,对付一段时间,好的话上台服务器。不行就结束掉。
另外到此为止吧,我已经在程序里实现了压缩/解压字段。谢谢大家!
發糞塗牆 2012-10-11
  • 打赏
  • 举报
回复
2005没有压缩功能,08才有,但是对lob类型效果有限,你花太多时间在压缩空间上可能成效不高。如果你的系统以后是作为正式系统的话,不可避免会增长,而且合理的增长证明你的系统多人用。更有价值。
gogodiy 2012-10-11
  • 打赏
  • 举报
回复
一共十多张表,其中三张表,两万条数据,就超过160M了?
那还是从数据下手吧,看看是否有字段的值太大太长了,或者使用了text、image等类型了。

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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