Chinaunix首页 | 论坛 | 博客
  • 博客访问: 99879
  • 博文数量: 44
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 431
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-13 14:21
文章分类
文章存档

2014年(2)

2013年(42)

我的朋友

分类: 大数据

2013-11-19 09:41:13

SQL2005删除大数据
 
客户端连接也变的异常慢,并且公司的所占空间大,因为是软件是深圳一家软件提供的,只有服务器在本地,而和这个公司沟通异常困难,所以只有自立更生了。
 
经过简单查看
 
?
1
2
3
4
5
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,删除
 
发现SQL2005 BCP可以导出导入数据,并且性能非常高,在本机试了一下,不错,每秒 51202.31 行,速度太给力了。那就把需要的数据导出来,然后truncate table,再将数据导回。按照这个思路。
 
?
1
2
3
4
5
6
7
8
9
10
11
12
导出-->
 
EXEC master..xp_cmdshell'BCP "SELECT  * FROM
XXX.dbo.A 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'

拓展阅读:

阅读(617) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~