sybase数据库怎么删除百万以上数据
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条记录
[解决办法]
[解决办法]下面的经验是针对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万条记录,就清空一次日志文件。
删除之前,做个完整备份,哈哈。
[解决办法][解决办法]这个大表上面有3个索引,其中有一个clustered,大约占30GB空间(只是索引),
删除3个索引大约花15分钟,其中最费时的是删除clustered index,花了10多分钟
建一个新的索引(non-clustered)花了20分钟
最后删除完成之后,重建3个索引大约30分钟。
也就是说,整个过程共花费不到一个小时,再加上4,5小时用于删除,共计6个小时左右。
如果没有上述操作的话,如开头说的,大约需要4天时间。
这个差别是非常大的。