gpt4 book ai didi

sql-server-2008 - 我应该提交还是回滚创建临时表、读取然后删除它的事务?

转载 作者:行者123 更新时间:2023-12-02 00:40:07 25 4
gpt4 key购买 nike

要选择与数百个 ID 列表相关的信息...而不是制作一个巨大的选择语句,我创建临时表,将 ID 插入其中,将其与表连接以选择与 ID 匹配的行,然后删除临时表。所以这本质上是一个读取操作,没有对任何持久数据库表进行永久更改。

我在事务中执行此操作,以确保在我完成后删除临时表。我的问题是......当我提交这样的事务与让它回滚时会发生什么?

性能方面...数据库引擎是否必须做更多的工作来回滚事务而不是提交事务?因为只对临时表进行了修改,所以有什么区别吗?

相关问题在这里,但没有回答我涉及临时表的具体案例:Should I commit or rollback a read transaction?

编辑(问题的澄清):

在提交/回滚之前不寻求建议。交易是绝对必要的。假设没有错误发生。假设我已经创建了一个临时表,假设我知道真正的“工作”写入 tempdb 已经发生,假设我在事务中执行只读(选择)操作,并假设我在临时表上发出删除语句。毕竟……哪个更便宜,提交还是回滚,为什么?基于这种涉及临时表和其他只读操作的特定场景,数据库引擎在提交与回滚时可能会做哪些其他工作?

最佳答案

如果我们谈论的是本地临时表(即名称以单个 # 为前缀),当您关闭连接时,SQL Server 将终止该表。因此,假设您的数据层设计良好,可以尽可能短地保持连接打开,我不会担心将临时表的创建包装在事务中。

我想在事务中包装表可能会有轻微的性能差异,但我敢打赌,与由于创建和填充表的时间而使事务保持更长时间打开的成本相比,它是如此之小以至于无关紧要临时表。

关于sql-server-2008 - 我应该提交还是回滚创建临时表、读取然后删除它的事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2878917/

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