在常规数据库(即非只读)中,将表放在只读文件组中是否会在访问时减少锁定?
E.g。将单独的文件组设置为读写,创建和填充表,将文件组更改为读写。
答案 0 :(得分:3)
不。
只读文件组不会阻止/减少锁定(我假设我们只讨论共享锁,因为没有其他语句是不可能的)..
当数据库设置为只读
时,可以阻止锁定只读文件组锁定方面已在此处介绍:Read-Only filegroups and Locking
use general
go
alter database general add filegroup foo
go
alter database general add file (
name = file1,
filename = ‘c:tempfile1’)
to filegroup foo
— create a table and associate it to a filegroup
create table t_fg (c1 int, c2 int) on foo
insert into t_fg values (1,1)
— mark the filegroup read-only
alter database general modify filegroup foo read_only
— run a transaction with repeatable read isolation
set transaction isolation level repeatable read
begin tran
select * from t_fg where c1 = 1
— no check the locks
sp_lock @@spid
— here is the output
spid dbid ObjId IndId Type Resource Mode Status
—— —— ———– —— —- ——————————– ——– ——
53 10 1381579960 0 RID 3:8:0 S GRANT
53 10 0 0 DB S GRANT
53 10 1381579960 0 PAG 3:8 IS GRANT
53 10 1381579960 0 TAB IS GRANT
53 1 1115151018 0 TAB IS GRANT