如果我要运行DELETE FROM some_table
,并且超时,那么数据会发生什么?
我看到它的方式,可能会发生两件事之一:
数据被删除到查询超时的程度,因此如果数据库中有1,000,000个条目并且前500,000个被删除,则它们将保持删除状态。现在,数据库的数量是查询运行之前的一半。
数据被删除,查询超时,数据被回滚(我会从DELETE
生成的日志中猜出来?)。数据库现在包含与其开始的完全相同的数据。
两者似乎合乎逻辑。一个人会100%的时间发生吗?或者这取决于我不知道的一些设置?请注意,我不是在询问DELETE
的可行性,我意识到TRUNCATE
可能是合适的。这纯粹是出于对DELETE
的超时功能的好奇心。
答案 0 :(得分:1)
Oracle,SQL Server,MySQL,PostgreSQL数据库遵循ACID属性。因此,只要 delete
语句显示超时,就必须回滚它。
您可以从此Link获得ACID的概述。