gpt4 book ai didi

sql - 单行 INSERT 是原子的吗?例如。在有 1M 列的表上?

转载 作者:行者123 更新时间:2023-12-04 18:22:07 26 4
gpt4 key购买 nike

单行 INSERT 是原子的(对于外部阅读器)吗?想象一下它发生在一个有 1M 列的表上。

执行单个 INSERT 时语句(即“单行”类型),是否有可能同时发生的读取操作(可能使用“读取未提交”隔离级别)仅读取 一些 值(列)?

我对 MS SQL Server 的行为特别感兴趣,尽管我认为这对于所有主要供应商都是相似的。

链接到有关此事的官方文档的奖励积分。

最佳答案

only read some of the values ?



是的,这可能发生。从某种意义上说,DML 是原子的,即写入要么全部保留,要么不保留,但并发读取可以以非常奇怪的方式观察部分写入。对于多行写入,这显然是可能的,但即使是单行写入对读者来说也不是原子的。

例如,您可能会发现一个非聚集索引的插入已完成,而另一个未完成。在罕见的、人为的情况下,这对于读者来说是可以察觉的。例如,如果你说:
select *
from T t1 with (index(1))
full outer join T t2 with (index(2)) on (someUniqueCondition)

您可以有效地获得两个非零索引之间的差异。实现此演示不需要索引提示。

关于sql - 单行 INSERT 是原子的吗?例如。在有 1M 列的表上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956391/

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