ash*_*999 4 fragmentation sql-server-2008-express
我有一个表,主键作为集群GUID字段; 我正在使用NEWSEQUENTIALID()
而不是生成GUID NEWID
.不幸的是,因为这个表每天看到~25k-100k的插入,在几个小时内(默认:聚集的)主键索引变成99%碎片.
我最初使用NEWID
而不是生成顺序ID,但即使我重新创建表并使用NEWSEQUENTIALID
(并指定为主键列的默认值)重新插入所有行,我仍然看到几个内的99%的碎片小时.(该表目前有大约130万条记录.
我曾考虑用整数主键替换GUID,但我不确定这是否有效; 此外,由于我们的团队使用GUID作为主键而不是整数,我认为我没有足够的支持来做到这一点.
我可以选择将这个东西进行碎片整理吗?我正在使用SQL Server Express,因此我无法访问SQL Agent(因此无法定期运行维护计划来重建索引).
我也很可能在将来的某个时刻拆分这个数据库/表(因为数据量),所以我可能需要GUID来合并表.
另外:我不能使用索引视图,因为我有一个内部选择,这对我来说很难放松到一个连接.
根据我自己的个人经验,抛弃GUID
s作为你的聚类键可以对你的系统产生重大的积极影响 - 特别是在索引碎片方面!
我的新INT IDENTITY
聚类指数几乎没有任何碎片 - 即使经过数月的日常生产密集使用.绝对值得!
Guid
在SQL Server中使用数据类型作为集群键是一个非常糟糕的选择 - 无论你怎样看待它......
请参阅Kimberly Tripp的一些(索引女王)博客文章,内容如下:
以及她关于群集键主题的其他任何内容....
归档时间: |
|
查看次数: |
3401 次 |
最近记录: |