我需要删除拥有17亿条记录的庞大数据库表。优化删除大型数据库表的方法
DB:Sybase,DB大小:350 gb。
我运行了'drop table'语句并且花费了18个多小时。 有没有其他的方法来优化它。
我需要删除拥有17亿条记录的庞大数据库表。优化删除大型数据库表的方法
DB:Sybase,DB大小:350 gb。
我运行了'drop table'语句并且花费了18个多小时。 有没有其他的方法来优化它。
这篇文章太大而无法评论。如果它没有帮助,我会删除它。我在一个sybase论坛上发现了以下内容,即确保所有外键等已被删除。
http://nntp-archive.sybase.com/nntp-archive/action/article/%[email protected]%3E
附:我发现了一个解决方法,可以持续加快表格的查看速度,并首先从数据库中删除外键。我的脚本 删除表和视图以前需要5小时(约20秒 删除每个对象);如果FK首先被丢弃,则在20分钟内完成 分钟。
他们这样做,在你的情况下,整个数据库,你需要做的是有问题的表格,我不知道这会帮助,因为这里的文档
其实说外键等会自动放在引用你正在丢弃的表中的表中。虽然它没有提到如果在调用drop时这些键当前是正在运行的事务的一部分会发生什么情况。
您的RDMS是否支持TRUNCATE?在sql server中,这个命令绕过了日志记录,只是重新排列了指针,并且在几秒钟内就可以快速执行。 –
无视我先前的答案。我以为你的意思是删除表格中的所有记录,在这种情况下,TRUNCATE将成为首选。我不知道哪一个更能表现DROP或TRUNCATE DROP。在清除所有元数据之前,DROP可能会执行TRUNCATE。我删除了我的答案。 –
我不知道sybase是如何工作的,但在mysql中可以从文件系统中删除这些数据库文件。 – Aitch