sql-server – “避免基于递增密钥创建聚簇索引”是SQL Server 2
我们的数据库由许多表组成,其中大多数使用整数代理键作为主键.这些主键中大约有一半位于标识列上.
数据库开发始于SQL Server 6.0时代. 从一开始就遵循的规则之一是,避免基于递增键创建聚簇索引,如在这些Index Optimization Tips中找到的那样. 现在使用SQL Server 2005和SQL Server 2008,我有强烈的印象,情况发生了变化.同时,这些主键列是表的聚簇索引的完美第一候选者. 解决方法这个神话可以追溯到SQL Server 6.5之前的 added row level locking.并在 Kalen Delaney之前在这里暗示.这与数据页面使用的“热点”以及整个2k页(SQL Server 7及更高版本使用8k页)被锁定的事实有关,而不是插入的行 发现Kimberly L. Tripp的权威文章 “The Clustered Index Debate Continues…”
编辑,2013年5月 lucky7_2000的答案中的链接似乎表明热点可以存在而且会引发问题. 在个人层面上,我已经在数据库上进行了调用,我将每秒数万行插入到具有bigint IDENTITY列作为聚簇PK的表中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |