27得票3回答
在使用SELECT-UPDATE模式时管理并发性

假设你有以下代码(请忽略它的糟糕程度): BEGIN TRAN; DECLARE @id int SELECT @id = id + 1 FROM TableA; UPDATE TableA SET id = @id; --TableA must have only one row, app...

16得票6回答
最佳情况下使用READ UNCOMMITTED隔离级别

众所周知,READ UNCOMMITTED 是最低的隔离级别,其中可能会出现脏读和幻读等问题。什么时候是使用这个隔离级别的最佳时间,以及为什么要使用它? 实际上,我之前读过答案,但是由于没有足够的示例,我无法完全理解它。

16得票3回答
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 的好处 不加锁读(READ UNCOMMITTED)事务隔离级别的好处

我在大多数的一般SQL查询中使用SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED,主要是因为在我最初学习这门语言时被灌输了这个概念。 据我理解,这个隔离级别的作用与WITH (NO LOCK)相同,但我只倾向于使用SET TRANSACTION...

14得票2回答
SQL Server的可串行化隔离级别是否锁定整个表?

我和我的一个同事讨论了使用可序列化隔离级别的影响。他说它会锁定整个表,但我不同意,并告诉他它可能会锁定整个表,但它试图应用范围锁,并且不像这里解释的那样应用真正的串行化:可序列化隔离级别。 我在文档中也找不到关于"锁定整个表"的任何内容:设置事务隔离级别。 文档中提到了一堆关于范围锁的东西...

13得票4回答
MySQL InnoDB即使在READ COMMITTED级别下,删除操作仍然会锁定主键。

前言 我们的应用程序运行多个线程并行执行DELETE查询。这些查询会影响隔离的数据,即不存在并发的DELETE操作会同时作用于不同线程中的同一行。然而,根据MySQL的文档,DELETE语句使用所谓的“next-key”锁,既锁定匹配的键值,又锁定一些间隙。这就导致了死锁问题,我们唯一找到的...

12得票2回答
在提交之前,InnoDB将事务数据存储在哪里?

我在家里使用JDBC技术进行了一些测试,使用了READ_COMMITTED和READ_UNCOMMITTED。 我发现READ_UNCOMMITTED实际上可以读取未提交的数据,例如来自尚未提交的某个事务的数据(可以执行UPDATE查询)。 问题: 1. 未提交的数据存储在哪里,以便RE...

11得票2回答
Switching to RCSI

我所工作的公司目前使用SQL Server数据库(通常是最新的企业版本)开发产品。 我会将其描述为一种OLTP数据库,写入和读取强度相对均衡,并且有许多时间紧迫的应用程序。除此之外,大量的报表和图形数据是从同一个OLTP数据库中显示出来的(单独的问题),针对那些频繁读写的表进行读取。 我们...

11得票2回答
在IsolationLevel.ReadUncommitted上发出了共享锁。

我读到如果我使用IsolationLevel.ReadUncommitted,查询不应该发出任何锁。然而,当我测试时,我看到了以下的锁: 资源类型:HOBT 请求模式:S(共享) HOBT锁是什么?与HBT(堆或二叉树锁)有关吗? 为什么我仍然会得到一个S锁? 在查询时如何避免共享锁,...

10得票1回答
快照隔离是好的吗?

我的情况: 表格:User { Id, Name, Stone, Gold, Wood } 我有以下“写入”线程: miningThread(每分钟执行一次) UPDATE User SET Stone = @calculatedValue WHERE Id=@id UPDATE...