MsSql Server,更新查询执行花了太多时间

时间:2015-09-11 18:26:48

标签: sql-server-2008 sql-update

我有一个sql server db保存我们的文本文档数据。

一个特定的表自己保留了数千个文本段落。这个表突然开始响应,以便异常更新查询。有时,非复杂的基本更新查询需要30-40秒。执行和asp.net应用程序使用此表抛出超时异常。

选择上次正常的查询,但更新。

为什么会这样,我该怎么办?

服务器系统 Windows 2008 R2 Standard MsSql Server 2008 R2

下面是我的表元数据。

CREATE TABLE [dbo].[MetinIcerikTablosuCari](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [MetinIsimID] [int] NOT NULL,
    [MetinIsimID_Eski_1] [int] NULL,
    [MetinIsimID_Eski_2] [int] NULL,
    [MetinIsimID_Eski_3] [int] NULL,
    [MetinIsimID_Eski_4] [int] NULL,
    [MetinIsimID_Eski_5] [int] NULL,
    [MetinIcindekilerID] [int] NOT NULL,
    [SilmeTalebi] [bit] NULL,
    [SiraNo] [int] NOT NULL,
    [ParagrafMetin] [text] NOT NULL,
    [RevizeParagraf] [text] NULL,
    [RevizeVarMi] [bit] NULL,
    [RevizasyonOnayi] [bit] NULL,
    [RevizasyonTarihi] [datetime] NULL,
    [RevizasyonSahibiID] [int] NULL,
    [RevizasyonOnayTarihi] [datetime] NULL,
    [RevizasyonOnaylayanID] [int] NULL,
    [RevizasyonSonOnay] [bit] NULL,
    [RevizeTuru] [int] NULL,
    [ParagrafRevizeIslemJetonu] [nvarchar](50) NULL,
    [BaglantiliOrtakRevizeSeriNo] [int] NULL,
    [SonOnayTarihi] [datetime] NULL,
    [SonOnaylayanID] [int] NULL,
    [ParagrafMetin_Eski_1] [text] NULL,
    [ParagrafMetin_Eski_2] [text] NULL,
    [ParagrafMetin_Eski_3] [text] NULL,
    [ParagrafMetin_Eski_4] [text] NULL,
    [ParagrafMetin_Eski_5] [text] NULL,
    [GirisTarihi] [nvarchar](50) NULL,
    [YayinTarihi] [nvarchar](50) NULL,
    [ParagrafNot] [nvarchar](max) NOT NULL,
    [DipNotTag] [nvarchar](max) NOT NULL,
    [MedyaURL] [nvarchar](100) NULL,
    [MedyaUrlNot] [nvarchar](max) NOT NULL,
    [VersiyonMetin] [int] NULL,
    [EtkileyenMetinID] [int] NULL,
    [tarih] [nvarchar](max) NULL,
    [GuncellemeTarihi] [datetime] NULL,
    [NotParagrafi] [bit] NULL,
    [YeniParagraf] [bit] NULL,
    [MedyaParagrafi] [bit] NULL,
    [EslestirmeSilmeOnayID] [int] NULL,
    [YargiOnBilgiSayfasi] [bit] NULL,
    [BolumParagrafi] [bit] NULL,
    [UstParagrafID] [int] NULL,
 CONSTRAINT [PK_MetinIcerikTablosuCari] 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].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_MetinIsimID]  DEFAULT ((0)) FOR [MetinIsimID]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_MetinIcindekilerID]  DEFAULT ((0)) FOR [MetinIcindekilerID]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_SiraNo]  DEFAULT ((0)) FOR [SiraNo]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_ParagrafMetin]  DEFAULT ('') FOR [ParagrafMetin]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_RevizeTuru]  DEFAULT ((1)) FOR [RevizeTuru]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_ParagrafNot]  DEFAULT ('') FOR [ParagrafNot]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_DipNotTag]  DEFAULT ('') FOR [DipNotTag]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_MedyaUrlNot]  DEFAULT ('') FOR [MedyaUrlNot]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_NotParagrafi]  DEFAULT ((0)) FOR [NotParagrafi]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_YeniParagraf]  DEFAULT ((0)) FOR [YeniParagraf]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_MedyaParagrafi]  DEFAULT ((0)) FOR [MedyaParagrafi]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_EslestirmeSilmeOnayID]  DEFAULT ((0)) FOR [EslestirmeSilmeOnayID]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_YargiOnBilgiSayfasi]  DEFAULT ((0)) FOR [YargiOnBilgiSayfasi]
GO

ALTER TABLE [dbo].[MetinIcerikTablosuCari] ADD  CONSTRAINT [DF_MetinIcerikTablosuCari_BolumParagrafi]  DEFAULT ((0)) FOR [BolumParagrafi]
GO

我检查并执行了更新统计信息sp,但似乎问题仍然存在。

像这样的简单更新查询:update MetinIcerikTablosuCari set ParagrafMetin = '<p>SPK Bültenleri - 2002/34: #media#93640#media#</p>' where ID = 35606需要20 - 30秒或更长时间。

我在查询执行时检查了CPU使用情况,它突然选择了appr。 75-80%。

我无法确定是否缺少服务器内存或sql异常使用内存。

以下是我的服务器硬件规格:

Windows 2008 R2标准版 - Service Pack1
处理器:Intel Core i5-2400 CPU @ 3.1 Ghz
RAM :8GB
系统类型:64位

此外,这可能是Windows Server或MsSql Server 2008 r2缺少更新

1 个答案:

答案 0 :(得分:2)

由于您还没有提供执行计划和其他必要的详细信息,我的假设是您可能有索引导致更新缓慢。索引有助于快速运行SELECT,但减慢了插入和更新语句的速度。列出所有索引(Clustered&amp; Non-Clustered),然后从表中删除不必要的索引。 另外,您多久更新一次统计信息?如果最近没有这样做,则按照SP

运行
  

EXEC Sp_Updatestats;

如果以上两种方式无法解决您的问题,那么我建议您发布表格元数据和执行计划。