小编via*_*tor的帖子

单个SQL语句如何隔离?

到目前为止,我读过的所有谈论事务的书籍都展示了涉及多个 SQL 语句的场景。

但是单个语句又如何呢?他们的隔离程度如何?标准中是否有指定?或者它取决于 RDBMS 和隔离级别?

让我举几个例子。

  1. UPDATE table SET value = value + 1 WHERE id = 1;

    这是一个复合read-update-write操作。read并行事务可以改变和write操作之间的值吗?有些书指出,在大多数RDBMS中,此操作是原子的(在多线程编程意义上) 。

  2. SELECT * FROM table t1 JOIN table t2 USING (id);

    如果表很大(或者查询会有一些复杂的过滤子句),在某些隔离级别上,列t1.*t2.*列是否可能因并行更新而有所不同?

  3. SELECT * FROM table1 WHERE id IN (SELECT t_id FROM table2);

    table1执行子选择后是否有可能删除一些记录?(这里我假设table2.t_id引用table1.id具有级联删除功能。)

  4. 热膨胀系数...

还可以提供有用手册的链接,这些手册充分解释了交易的所有细节。

concurrency transaction isolation-level consistency

5
推荐指数
1
解决办法
693
查看次数