首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标准版中联机的索引维护操作:表是读-写还是只读?

标准版中联机的索引维护操作:表是读-写还是只读?
EN

Database Administration用户
提问于 2014-09-24 20:09:25
回答 1查看 2.6K关注 0票数 4

据我们了解,与Server 2008及以上版本有关:

代码语言:javascript
复制
ALTER INDEX ... REORGANIZE

正在以各种类型的Server进行联机操作。

代码语言:javascript
复制
ALTER INDEX ... REBUILD

是阻塞操作,除非您有Server企业版.(即使使用Enterprise,在重新生成聚集索引时也会阻塞)

如果以上所述都是正确的,问题是:

ALTER INDEX ... REORGANIZE操作期间,表是否可用于读和写,还是被写入阻塞?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2014-09-24 20:22:30

在一个新的索引..。重新组织操作时,表是否可用于读和写,还是被写入阻止?

重新组织总是在线操作和单线程操作,但不包含阻塞锁。当您重新组织时,有allow_page_locks =ON or OFF选项,如果您关闭这个值,可能会出现错误,比如索引不能被重新组织,因为它不能使用页面级别的锁,所以最好用选项allow_page_locks =ON来重新组织索引。因此,是的表可用于读写操作,锁如选项中所指出的那样被接受,但正如我所说的,它不包含阻塞锁。

根据微软联机丛书

关闭页和行锁定可能是也可能不能接受,因为每周批处理更新将阻止并发读取器在更新运行时访问表。如果批处理作业只更改几行或几页,则可以更改锁定级别以允许行或页级别锁定,这将使其他会话能够在不阻塞的情况下从表中读取数据。如果批处理作业有大量更新,则获取表上的独占锁可能是确保批处理作业高效完成的最佳方法。

改变索引..。重构是一种阻塞操作,除非您有。(即使使用Enterprise,在重新生成聚集索引时也会阻塞)

即使是企业版中的索引重建也需要短期锁,因为根据保罗·兰德尔文章,在线索引操作需要采取两个非常短期的表锁。操作开始时使用S(共享)表锁,强制所有可能触及索引的写入计划重新编译;操作结束时使用SCH-M (模式修改)表锁,强制所有可能触及索引的读写计划重新编译。

票数 8
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/77554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档