2013-01-10 63 views
4

模糊標題我知道。刪除Azure架構或刪除行需要很長時間

我的數據庫中有16,000行。這是在開發時創建的,我現在要刪除所有這些行,以便我可以重新開始(所以我沒有重複的數據)。

數據庫在SQL Azure上。

如果我運行一個選擇查詢

SELECT [Guid] 
    ,[IssueNumber] 
    ,[Severity] 
    ,[PainIndex] 
    ,[Status] 
    ,[Month] 
    ,[Year] 
    ,[DateCreated] 
    ,[Region] 
    ,[IncidentStart] 
    ,[IncidentEnd] 
    ,[SRCount] 
    ,[AggravatingFactors] 
    ,[AggravatingFactorDescription] 
    FROM [dbo].[WeeklyGSFEntity] 
GO 

這將返回所有的行,並SSMS說,這需要49秒。

如果我試圖放下桌子,這會持續5分鐘。

DROP TABLE [dbo].[WeeklyGSFEntity] 
GO 

/****** Object: Table [dbo].[WeeklyGSFEntity] Script Date: 10/01/2013 09:46:18 ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[WeeklyGSFEntity](
    [Guid] [uniqueidentifier] NOT NULL, 
    [IssueNumber] [int] NULL, 
    [Severity] [int] NULL, 
    [PainIndex] [nchar](1) NULL, 
    [Status] [nvarchar](255) NULL, 
    [Month] [int] NULL, 
    [Year] [int] NULL, 
    [DateCreated] [datetime] NULL, 
    [Region] [nvarchar](255) NULL, 
    [IncidentStart] [datetime] NULL, 
    [IncidentEnd] [datetime] NULL, 
    [SRCount] [int] NULL, 
    [AggravatingFactors] [nvarchar](255) NULL, 
    [AggravatingFactorDescription] [nvarchar](max) NULL, 
PRIMARY KEY CLUSTERED 
(
    [Guid] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) 
) 

GO 

如果我試圖刪除每一行,這也需要5分鐘加。

DELETE 
    FROM [dbo].[WeeklyGSFEntity] 
GO 

上午我做錯了什麼或只是認爲這是數據,我是急什麼?

UPDATE:

刪除整個數據庫採取了一些25秒。

將22,000行(大致相同的16,000以上)導入localdb\v11.0需要6秒。我知道這是本地的,但本地開發服務器肯定比Azure慢?當然...

更新第二:

重新創建數據庫,並重新創建模式(帶(流利)NHibernate的),然後將約20,000行耗時2分6秒。所有單元測試通過。 有什麼我可以做的回頭看?

+1

16000元相對較小,刪除不那麼長時間。這是你的整個SQL腳本嗎?你有沒有額外的腳本創建一些觸發器?你的數據也是什麼數據庫? – Tom

+0

就是這樣。 沒有別的,那些是由SSMS本身生成的腳本。這是Windows Azure上的Web實例,但仍然是, 什麼是我的數據庫?根據Azure數據庫管理器,這僅僅是文本,沒有關係,它是16MB(儘管報告了25,600行,其中SSMS報告了16,000)。 –

+0

看起來很奇怪,下降會花費這麼長時間。如果你只是想要它完成,你可以嘗試先做一個TRUNCATE,然後是DROP。但是我仍然想知道爲什麼DROP需要這麼長時間以防止出現另一個問題。 –

回答

0

刪除和重新創建數據庫大大加快了速度。

原因不明。

0

可能有一個打開的事務引起表上的鎖。這可能是由於取消手術的一半,就像我們在開發期間所做的一樣。

執行sp_who2並查看哪個ID在blkby列中。如果有這樣的話。

殺死進程做你的數據庫kill id

+0

當然,刪除數據庫也將殺死該鎖 – Shumii

相關問題