锁,是由锁管理器负责维护,其目的是保证事务的ACID,是平衡并发和数据安全的机制。

锁定粒度与并发性是成反比的,默认情况下,SQL Server Compact 4.0 对数据页使用行级锁定,对索引页使用页级锁定。

每次会话的锁数是有限的,当事务超出其升级阈值时,Microsoft SQL Server Compact 4.0 自动将行锁和页锁升级为表锁,从而利用锁升级减少系统开销。

可以通过设置锁升级阈值来控制每个会话的锁升级:SET LOCK_ESCALATION 1000;

此设置影响数据库中的所有表,默认值为 100。

注意锁升级会影响数据的访问。

SQL Server 之 锁SQL Server 之 锁

   每次数据访问,都必须建立在一个事务上,要么成功,要么失败。

SQL Server 之 锁

 请求的锁定模式及其与现有锁定模式的兼容性:

SQL Server 之 锁

--排它锁
begin tran
update users set sex='1' where ID='1'
waitfor delay '00:00:10'
commit tran
begin tran
select * from uses where ID='1'
commit tran

--共享锁
begin tran
select * from users(holdlock) where ID='1'
waitfor delay '00:00:10'
commit tran
begin tran
select * from users where ID='1'
update uses set sex='2' where ID='1'
commit tran

 

SQL Server 之 锁

 

有关语句:

select * from sys.dm_os_waiting_tasks
select * from sys.dm_tran_locks

alter table tablename set (lock_escalation = auto|table|disable)

SELECT @@LOCK_TIMEOUT --   -1: 无限制时间等待锁

SET LOCK_TIMEOUT 60000 --     1 分钟

相关文章:

  • 2021-10-28
  • 2021-09-22
  • 2022-12-23
  • 2022-01-31
  • 2021-09-28
猜你喜欢
  • 2021-10-28
  • 2021-05-20
  • 2022-02-25
  • 2021-07-02
相关资源
相似解决方案