专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Sybase

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

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
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天时间。
这个差别是非常大的。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: