【发布时间】:2011-07-15 05:22:42
【问题描述】:
我从mssqlcity.com 得到这个提示。但是,我无法理解它的解释。
避免基于递增键创建聚集索引
例如,如果一个表有代理 整数主键声明为 IDENTITY 和聚集索引是 在此列上创建,然后每个 时间数据被插入到这个表中, 行将被添加到末尾 桌子。当很多行将是 添加了一个“热点”可能会发生。热的 当许多查询尝试 在同一区域读取或写入数据 同时。 “热点”导致 I/O 瓶颈。笔记。默认情况下,SQL 服务器为 主键约束。所以,在这个 情况下,您应该明确指定 NONCLUSTERED 关键字表示 创建一个非聚集索引 主键约束。
在阅读之前,我想如果我选择一个本质上是随机的列,这是不正确的,因为这会在添加新行时导致不必要的页面重定位。所以,我认为最好使用排好序的列。
阅读此提示后,我认为它试图说明我们真的不想使用直接排序的列作为我们的聚集索引,因为对于那些写入密集型应用程序来说将会存在 I/O 瓶颈。
我真的不明白他们所说的 I/O 瓶颈的原因。他们是说共享同一页面的太多操作会减慢磁盘操作吗?这是怎么发生的?谁能给我解释一下?
【问题讨论】:
-
这里提到了“
SQL Server 2000的新功能”,这应该会让你对这篇文章的时代有所了解。 -
@Quassnoi 是的,我现在得到了 JNK 的提示。我认为该建议适用于 SQL Server 6.5 或更早版本。我用谷歌搜索发现this。这是说一旦将行级锁定功能添加到 SQL Server 7.0。热点问题解决了。
标签: sql sql-server performance indexing