简体   繁体   English

可序列化的隔离级别 - 它会阻止读取吗?

[英]Serializable isolation level - does it block read?

I have read that serializable isolation level blocks only: insert, update, delete but NOT read.我只读过可序列化的隔离级别块:插入、更新、删除但不读。

I have run in one window:我已经运行了一个 window:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;  

UPDATE [dbo].[Categories]
SET name = 'aaa'
WHERE categoryid = 4;

-- without commit

And in the second window:而在第二个 window 中:

SELECT TOP (1000) [CategoryId]
      ,[Name]
  FROM [dbo].[Categories]

And the above query is waiting for the end of the first query.上面的查询正在等待第一个查询的结束。 So does serialization isolation level block also read?那么序列化隔离级别块也读吗?

Yes it blocks reads.是的,它会阻止读取。 Your transaction is not committed, so you can still do a rollback.您的事务未提交,因此您仍然可以进行回滚。 That means the data you have updated should not be read by any other process before you commit.这意味着在您提交之前,任何其他进程都不应读取您更新的数据。

"does serialization isolation level block also read": No. Serializable acquires some lock (in Ms Sql its shared lock + range lock) which prevents writes from other transactions. “是否还读取序列化隔离级别块”:否。Serializable 获取了一些锁(在 Sql 女士中,它的共享锁 + 范围锁)阻止了其他事务的写入。 Its the UPDATE statement's exclusive lock (the above shared lock now converts to exclusive lock) that prevents second transaction's SELECT (Read Commited or Repeatable Read by deafult depending on db) to wait.它的 UPDATE 语句的排他锁(上面的共享锁现在转换为排他锁)防止第二个事务的 SELECT (Read Commited or Repeatable Read by deafult 取决于 db)等待。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 TRANSACTION ISOLATION LEVEL SERIALIZABLE是否创建READ锁定 - Does TRANSACTION ISOLATIoN LEVEL SERIALIZABLE create READ lock 事务级别之间的差异:读可写和可隔离级别 - Differences between TRANSACTION's levels: READ WRITE and ISOLATION LEVEL SERIALIZABLE 可序列化和可重复读取隔离级别有什么区别? - What is the difference between serializable and repeatable read isolation level? 具有可序列化隔离级别的事务中的死锁 - Deadlock in transaction with isolation level serializable 可序列化隔离级别的意外行为 - Unexpected behaviour of the Serializable isolation level SQL事务隔离级别可序列化与在开发与生产中提交的读取 - SQL Transaction Isolation Level Serializable vs Read Committed in Dev vs Production 使用SQL ISOLATION LEVEL SERIALIZABLE进行锁定和引用计数 - Locking and reference counting with SQL ISOLATION LEVEL SERIALIZABLE 如何在SQL Server中实现可序列化的隔离级别 - How to implement Serializable Isolation Level in SQL Server 具有可序列化隔离级别的两个 PostgreSQL 事务发生冲突 - Conflict on two PostgreSQL transactions with serializable isolation level 将所有sql调用包装在ISOLATION LEVEL SERIALIZABLE中是否可以消除所有并发问题? - Does wrapping all sql calls in ISOLATION LEVEL SERIALIZABLE remove all concurrency issues?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM