几次同时请求查询执行序列



例如,一个用户执行这样的查询:

UPDATE table SET column = 100;

和第二用户:

UPDATE table SET column = 200;

,可以说,这两个查询是同时要求完全相同的哪一秒钟?

在这种情况下,数据库会随机选择查询序列吗?

P.S。我没有标记一些具体数据库,我认为所有主要RDBM的机制都是相似的。或可能不是?

rdbms的实现一组属性缩写(并称为)酸。维基百科解释了这个概念。

基本上,符合酸的数据库将数据锁定在某个级别(表,页面和行锁定是典型的)。原则上,同一对象只能获取一个写锁。因此,数据库将任意锁定其中一项交易的行。

另一笔交易会怎样?这取决于,但应该发生两件事之一:

  • 交易等待直到可用。因此,"最后"将分配值(失去锁,赢得战争;)。
  • 交易将"超时",因为适当的行不可用。

您的情况更加复杂,因为表中的所有行都受到影响。最终,所有行应在符合酸的数据库中具有相同的值。

我应该注意,主要数据库(通常)符合酸。但是,即使它们具有锁,交易以及类似的机制,细节在数据库中也会有所不同。

通常,DML操作是通过获取 dml锁来完成的,并在其帮助下进行操作 atomic and em>>一致。因此,在您的情况下,任何一个查询都将得到DML锁定并执行,然后第二个查询将以类似的方式进行。哪一个是第一个和第二,

最新更新