Ond*_*rka 0 index sql-server sql-server-2008-r2
我们有相当大的表(500 密耳行),我们期望频繁插入。桌子有大约。每个索引 2 个。问题是我们担心,当索引重新计算时,整个表被锁定,所有查询都会超时(在重新计算期间)。
有没有办法尽量减少重新计算索引的发生?例如,让节点在创建时变大,这样更多添加的指针将适合索引,而无需重新平衡索引?
我们有 SQL Server 2008 R2。
我认为“重新计算”是指完全重建索引。SQL Server 永远不会完全重建索引,除非你明确告诉它,所以你不会看到性能随机暂停,因为它决定开始重建。
每个索引确实增加了需要为给定INSERT
或UPDATE
操作完成的工作量,因为索引的一小部分需要更新,但这是一小部分:大约 10 页的数量级影响 500M行(假设索引是在一个小的数据类型上,例如一个INT
,DATETIME
或者UUID
- 例如一个长字符串类型的索引将需要更多的工作,因为更少的条目适合一页,但相对于整个索引的大小)。在这些小更新期间,由于INSERT
和UPDATE
操作没有大锁,除非事务中的其他东西需要表锁(即使有,每行操作的小意味着如果对多行进行操作,您只会看到锁有显着影响)。
很少需要重建整个索引,只有在您明确请求时才会重建。如果您拥有企业版,则可以通过使用在线索引构建来减少索引重建的影响 - 由于新生成的索引附加到表,因此仍然会有一段时间表被锁定,但这与整个索引构建。
归档时间: |
|
查看次数: |
344 次 |
最近记录: |