SQL Server 锁机制与共享锁、独占锁

SQL Server 锁机制与共享锁、独占锁

在 SQL Server 中进行 SELECT 查询的时候,是会对表进行加共享锁的,也就是 S 锁。一旦加了 S 锁,其他地方就只能对这张表进行查询(SELECT),不能进行增删改操作。

如果对表进行增删改,那么此时 SQL Server 就会对表进行独占锁。一旦加了独占锁,其他任何操作都不能对这张表进行增删改查,包括查询也不允许。

创建测试表

USE [School]
GO

/****** Object:  Table [dbo].[Student]    Script Date: 01/10/2019 11:48:29 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Student](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[name] [nvarchar](250) NULL,
 CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GOCode language: PHP (php)

插入百万级测试数据

往这张表里面加入百万级的数据,name 使用随机数,随机字符串使用 NEWID() 函数来生成:

DECLARE @INDEX INT
SET @INDEX = 0
WHILE @INDEX < 1000000
BEGIN
	INSERT INTO [School].[dbo].[Student]([name]) VALUES(NEWID())
	SET @INDEX = @INDEX + 1
ENDCode language: PHP (php)

注意:这里的时间是原子性的,也就是同一时刻。比如当前一张表在查询,但查得很慢,一直还没查完,这个时候再去另一个页面查询,那就是同时。

Previous:
Next:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注