高指数碎片

时间:2018-03-06 11:00:50

标签: sql-server

我们运行的SQL Server数据库由于某种原因遇到大量索引碎片(高达85%或更高),我们发现自己几乎每天都在重建索引以阻止这种情况。

我们不知道为什么会发生这种情况。这些表使用newsequentialid()来生成新的GUID(主键),所以我们认为应该总是在最后添加新的行,但我们觉得这不是可能导致高碎片率的情况?

有没有人有任何想法,我们可以尝试缓解这个问题或进一步诊断它?

示例表将是:

CREATE TABLE [dbo].[EmailMessages](
    [Id] [uniqueidentifier] NOT NULL,
    [Name] [nvarchar](max) NULL
 CONSTRAINT [PK_dbo.EmailMessages] PRIMARY KEY CLUSTERED 
 (
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

 GO

 ALTER TABLE [dbo].[EmailMessages] ADD  CONSTRAINT  [DF__EmailMessage__Id__7993056A]  DEFAULT (newsequentialid()) FOR [Id]
 GO

0 个答案:

没有答案