首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Sybase >

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

2012-02-24 
sybase数据库如何删除百万以上数据?sybase数据库如何删除百万以上数据?以下两个语句都不能用:1、 DELETE FR

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天时间。
这个差别是非常大的。

热点排行