从MS SQL删除大数据说开去-2
上一篇 /
下一篇 2012-04-01 10:07:59
/ 个人分类:数据库
平时的
日志文件几百M。
*jdk9p@.b4QO%k#@0 这报警是D盘小于40G,那就是说日志文件增长了45G以上,那时也正好是删除数据的Job在执行。在我检查这些删除动作的语句时,发现了问题,就是没有考虑删除大数据时日志增长与磁盘空间的关系。这样下去,可能那一次就挂了。
jb7t~]5hW0 再说说删除数据的方式:
)s dL(e[
V$N#Je0 对于删除数据,T-SQL提供了两个从表中删除数据行的语句:Delete和TRUNCATE.
h n y;\xU8F$C
Kc'z+m0 DELETE 语句是标准的SQL语句,它用于根据指定的谓词(条件)从表中删除数据。这个标准的语句只有两个子句:用于指定目标表名的FROM子句和用于指定谓调整条件的WHERE子句。只有能让谓词条件计算结果为TRUE的行才会被删除。
1[!Kqja R
f7d4^0 例如:
(m9ybJ#P$fQ0U._2c2srp^/X0DELETE from dbo.S5_BinTest_Info where TS <dateadd(dd,-90,getdate()); |
C2dV[(i'AY051Testing软件测试网!C |
m2jQ
这是删除表S5_BinTest_Info中时间字段TS早于90天的数据。51Testing软件测试网[BF m1w
DELETE语句采用的是完整模式的日志处理,当删除大量数据时,可能会花费大量的时间还有需要大量的日志存放空间。
mR YWE j:JQG;{`I0 TRUNCATE语句不是标准的SQL语句,它用于删除表中所有的行。与DELETE语句不同,TRUNCATE不需要加条件,如:
!bn_7t,C'|N051Testing软件测试网]K#PaU#[3s$z-O F
TRUNCATE TABLE dbo.S5_BinTest_Info; |
` ORR
J0
b1U9rT)Jtd0 和DELETE语句相比,TRUNCATE具有以最小模式记录日志和优点。和DELETE语句的完整模式在性能上有巨大的差异。TRUNCATE的速度最快。当表中有标识列时,DELETE不会改变标识列的值,TRUNCATE则会重置为最初的种子值。
@L7J)r0OI^Bo2]&C0
收藏
举报
TAG: