2014-04-17 117 views
1

這個問題出於好奇。我有一張桌子,裏面插入了很多數據。現在會發生什麼 - 隨着此表中數據的增長,插入變得越來越慢。這可能是什麼原因?我能爲這種情況做些什麼?表中插入變得越來越慢

該表沒有索引。

感謝

+1

添加索引:)您的一些疑慮可能已在此解決:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/95f1840a-5522-4078-8582-cbd06332d168/insert- performance-vs-table-size?forum = sqldataaccess – DrCopyPaste

+1

@DrCopyPaste添加索引通常與高度事務性的系統相反,我不確定這會產生預期的影響。可能的話,如果有任何外鍵可能,速度將會受益。 –

+0

@AnthonyHorne當然首先在測試環境中添加該索引(克隆數據庫不在生產中),並讓最傷害的[但也是其他]查詢運行它,這應該會讓您安全;) – DrCopyPaste

回答

2

如果可以的話,和最新的備份並不重要,設置數據庫類型SIMPLE(SQL數據庫屬性)。這可能是事務日誌不斷增長並導致您運行整個事情。

+0

你有這個鏈接嗎?數據庫類型SIMPLE究竟幹什麼? (與「非」簡單對比) – DrCopyPaste

+0

根據Express與Full的不同,您的默認數據庫模型是完整的或簡單的。這是簡單與完整與散裝。請參閱http://technet.microsoft.com/en-us/library/ms175987(v=sql.105)。aspx –

+0

SIMPLE將減少事務日誌 –

1

這是我在投機的嘗試:

當您更改的數據庫,結果沒有直接寫入到永久存儲—改變完成在存儲器中,只有事務日誌被寫入網頁。

過了一段時間,數據庫系統將耗盡內存中的乾淨頁面以便寫入:即,它將開始將表頁面刷新到磁盤。

對此行爲沒有任何可以做的事情,這完全是有意的。

2

這是我對此問題的看法:

您是否在桌子上使用索引?從我讀過的內容可以看出,如果你確實在你的表上使用了一些索引,那麼dbms必須更新你在表中插入的每個新記錄的索引數據結構。隨着你的表變大,這個過程變慢。這基本上是通過使用索引進行更快的讀取之間的折衷,但是當您的表得到很多修改時,維護這些索引變得昂貴。

article提供了關於此的更多信息。

+0

有人提到沒有索引,儘管原始發佈者可能忘記了主鍵也是索引。 – Twinkles

+1

主鍵上的主索引仍然是一個索引。 – ultrajohn

+0

沒有主鍵。我只是使用Id int identity(1,1) –