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

sybase数据库怎么删除百万以上数据

更新时间: 2014-01-05 02:21:33 责任编辑: Author_N1

 

sybase数据库如何删除百万以上数据?
sybase数据库如何删除百万以上数据?以下两个语句都不能用:
1、 DELETE FROM DM_MDN_TERMINAL_RELATION_T

2、truncate table DM_MDN_TERMINAL_RELATION_T



--参考方法--
不能一下子删除这么多数据,容易日志满

可以考虑加条件段
比如主键序号(xh)什么的
然后一段一段的删除

DELETE FROM 表名 WHERE xh>='10000001' AND xh<='10000100' //先删除100条记录
--参考方法--
探讨
sybase数据库如何删除百万以上数据?以下两个语句都不能用:
1、 DELETE FROM DM_MDN_TERMINAL_RELATION_T

2、truncate table DM_MDN_TERMINAL_RELATION_T

--参考方法--
下面的经验是针对SQL Server的,但SYBASE也是同理。希望对你有帮助。

我们在SQL Server上面删除1.6亿条记录,不能用truncate(因为只是删除其中部分数据)。经过实验,每次删除400万条要花1.5 - 3小时,而且是越到后面越慢,正常的话,需要大约102个小时,大约4天半时间。这在生产环境下是不能接受的。

经过一个处理之后,我每次删除400万条记录花5 - 6分钟,删除全部1.6亿条记录花了4 - 5个小时!

为什么??

每次删除记录,数据库都要相应地更新索引,这是很慢的IO操作。而且后面索引碎片越来越多,就更慢。这就是为什么一开始只花1.5小时,后面要3小时才能删除400万条记录的原因。

我在删除前先保存当前索引的DDL,然后删除其索引,
然后根据使用的删除条件建立一个临时的索引(这是提高速度的另外一个重要原因!)
开始删除操作,完成之后再重建之前的索引。




--参考方法--
对了,还有一点,删除的时候不要在记录日志的模式下面,否则日志文件就要爆了。
我们是每上次400万条记录,就清空一次日志文件。

删除之前,做个完整备份,哈哈。

--参考方法--
探讨

下面的经验是针对SQL Server的,但SYBASE也是同理。希望对你有帮助。

我们在SQL Server上面删除1.6亿条记录,不能用truncate(因为只是删除其中部分数据)。经过实验,每次删除400万条要花1.5 - 3小时,而且是越到后面越慢,正常的话,需要大约102个小时,大约4天半时间。这在生产环境下是不能接受的。

经过一个处理之后,我每次删除400万条记录花5 - ……

--参考方法--
这个大表上面有3个索引,其中有一个clustered,大约占30GB空间(只是索引),
删除3个索引大约花15分钟,其中最费时的是删除clustered index,花了10多分钟

建一个新的索引(non-clustered)花了20分钟

最后删除完成之后,重建3个索引大约30分钟。

也就是说,整个过程共花费不到一个小时,再加上4,5小时用于删除,共计6个小时左右。
如果没有上述操作的话,如开头说的,大约需要4天时间。
这个差别是非常大的。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

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