gpt4 book ai didi

sql - 我应该在删除表之前截断表以避免日志记录开销吗?

转载 作者:行者123 更新时间:2023-12-02 11:14:10 24 4
gpt4 key购买 nike

据我了解,使用TRUNCATE 是一种最小记录操作,不会记录每条记录的删除,而DROP 会记录删除操作。

因此,可以安全地假设,如果我想删除一个相对较大的表,并且希望尽快完成并且日志记录开销尽可能小,我应该在之前 TRUNCATE TABLE删除表?在 RECOVERY SIMPLE 中执行此操作有什么不同吗?

我应该注意,这需要以自动化方式(在预先编写的脚本内)进行,因为这将部署到客户端数据库,其中停机时间和日志文件增长都可能成为问题。

最佳答案

虽然 TRUNCATE 不记录单个行,但它会记录页面/范围。这就是为什么你可以回滚截断(很多人不知道)。我的猜测是,如果你只是截断然后删除它实际上会比单独删除慢。如果您在两者之间提交,也许不会,但这也取决于日志事件、恢复模型、何时到达检查点等。

为什么速度在这里很重要?如果您要删除该表,那么用户就不会使用该表...

为什么不测试一下呢?除非有人对此进行了涵盖几个不同变量的广泛研究,否则我怀疑您得到的不仅仅是准受过教育的猜测。

关于sql - 我应该在删除表之前截断表以避免日志记录开销吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com