欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

sql2005剔除大数据

更新时间: 2014-01-05 02:07:04 责任编辑: Author_N1

 

SQL2005删除大数据

客户端连接也变的异常慢,并且公司的数据库所占空间大,因为是软件是深圳一家软件提供的,只有服务器在本地,而和这个公司沟通异常困难,所以只有自立更生了。

经过简单查看

create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), 
index_size varchar(20), unused varchar(20))
exec sp_MSforeachtable "insert into #t exec sp_spaceused '?'" 
select * from #t order by name 
drop table #t

发现最大的一个表A,居然有1亿6千万数据,就是它了,并且这个表还在不停增长中,每天大概270-300万行,非常恐怖,这也是我接触过最大数据了,之前应用过的最多也就3千万,跟这比,有点小巫见大巫了,呵呵。

按上头意思,把不必要的删了,然后开始删,最开始是按日期,

between and  这样太慢了,删除一个月数据,都要大半天,很费时间,后来改用ID,根据时间查到某月最大ID是B,删除<B,速度稍微快一点,还是慢,在这里比较笨,删除了近半数据后,查查,也只是少了8千万,还有9千万,还要再删,这时再也不想像上面那样操作了。开始寻找新办法。

发现SQL2005 BCP可以导出导入数据,并且性能非常高,在本机试了一下,不错,每秒 51202.31 行,速度太给力了。那就把需要的数据导出来,然后truncate table,再将数据导回。按照这个思路。

导出-->

EXEC master..xp_cmdshell'BCP "SELECT  * FROM XXX.dbo.whereid>117634587" queryout e:\A-10.1.txt -c -S".,20001" -U"jtx" -P"Jtx"'
--已复制 49312222 行。
--总时钟时间(毫秒)     : 942750 平均值: (每秒 52306.79 行。)

导入-->

  EXEC master..xp_cmdshell 'BCP XXX.dbo.Ain E:\A-10.1.txt -c -T'



上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:07:04
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/5812/
本文WWW.DOC100.NET DOC100.NET版权所有。