不知何故,我的數據庫寫入時太慢。SQL Server:優化表設計與巨大的數據記錄的建議
目前我使用了319MB,其中有2,127,227行。前幾天我的電腦每秒能夠插入幾千行,現在我永遠需要插入1千行。現在需要165秒來插入1千行(每行0.165)。我需要能夠插入10,000每分鐘(每行0.006)
請參閱下面我的表和服務器規格的設計,讓我知道你是否可以幫助我優化這一點。謝謝。
Current usage report
Records 2,127,227
Reserveed KB 323,088
Data(KB) 177,088
我的檯面設計是這樣的,我做指數[LoginID] ASC,[ProductID] ASC, [ProductModifiedDate]
CREATE TABLE [dbo].[ProductTable](
[ID] [uniqueidentifier] NOT NULL,
[LoginID] [int] NULL,
[ProductID] [int] NULL,
[ProductPrice] [decimal](18, 4) NULL,
[ProductModifiedDate] [datetime] NULL,
[ProductCreatedDate] [datetime] NULL,
CONSTRAINT [PK_ProductTable] PRIMARY KEY CLUSTERED
([ID] ASC)
CREATE NONCLUSTERED INDEX [IX_ProductTable] ON [dbo].[ProductTable]
(
[LoginID] ASC,
[ProductID] ASC,
[ProductModifiedDate] ASC
)
我的插入語句只是一個普通的簡單的SQL語句,有沒有什麼特別的。
我的硬件:
我有一個2四核2.83 GHz,具有16GB的DDR3內存與SQL Server 2008 R2速成版。插入這些行時,CPU以25%的容量運行。
請讓我知道如何優化此表。我真的需要能夠搜索所有這些列,所以我認爲索引這些列非常重要,我必須將行保留30天。
我以爲SQL Server Express版本可以支持10GB的數據。
由於您在GUID列上有聚簇索引,因此您的索引將具有**可怕的**碎片量 - 並且每次插入更多行時會變得更糟。您需要(a)至少重建索引以限制碎片,或者(b)更好:使用除GUID之外的其他內容作爲集羣密鑰。 GUID對於集羣密鑰來說是一個非常糟糕的選擇 - 請參閱[GUIDs PRIMARY KEYs和/或集羣密鑰](http://www.sqlskills。COM /博客/ KIMBERLY /後/的GUID-AS-PRIMARY密鑰-安道爾最聚類-key.aspx) – 2012-07-20 04:58:57