2010-12-14 77 views
0

突然在幾張表中做更新比以前慢了10倍。有什麼好的建議來確定根本原因和優化?索引某些列是否會導致更新速度變慢?還有其他建議嗎?爲什麼SQL在更新時會很慢?

我認爲比猜測更重要的是幫助識別性能的根本原因或指標。

Fluent NHibernate中有什麼可用於幫助確定性能問題的根本原因嗎?

回答

3

首先嚐試更新您的統計信息。

然後,看看你的索引,並確保你只有你所需要的。額外的索引肯定會減慢插入速度。

然後,嘗試重建索引。

不知道模式,查詢或數據量,很難說比這更多。

+0

+1:如果它不夠,當你更新時,你的索引被重新計算,所以你的表有更多的行,重新計算索引需要更多的時間。也許歸檔可以成爲解決問題的方法:) – LaGrandMere 2010-12-14 14:42:09

+0

你是什麼意思「更新你的統計數據」?我如何重建索引 – leora 2010-12-14 15:00:55

+1

您可以在數據庫中運行'EXEC sp_updatestats' [更新所有統計信息](http://msdn.microsoft.com/en-us/library/ms187348.aspx)。 – RedFilter 2010-12-14 15:14:41

0

它值得檢查你的數據文件的增長設置,如果你做了大量的插入,這會強制正常的文件增長,它可以表現爲減速。

1

原因...

  • 索引過多

  • 越來越多的記錄

  • 更新查詢

  • 鎖定的WHERE子句的不良指數covarage由於多次更新引起的問題(表鎖)

  • 硬件問題(磁盤控制器,網絡等)

1

與以往一樣,您的SQL服務器上運行的SQL事件探查器會給你正好在你的瓶頸是什麼時候是個好主意。

+0

是否有任何有關如何有效地使用SQL分析器的好文檔 – leora 2010-12-14 15:01:17

+0

@ooo - 從來沒有真正看過,但這給了我不少點擊:http://www.google.co.uk/search?sourceid=chrome&ie=UTF- 8&q = SQL +服務器+探查 – Paddy 2010-12-14 15:13:09

1

1 - 首先檢查,如果該表沒有鎖

2-最近實施的觸發

3-數據庫的刷新可能需要指數重修。

4-某些預定義作業正在進行中。

5-任何不明原因

使用一些查詢analzer工具來看看什麼是真正發生的事情。

0

另外檢查你是否以無序的方式將數據插入到聚集索引中。

聚集索引按照字段的順序存儲數據,這意味着如果它是唯一的,您將重新安排每個插入的數據。

集羣索引對順序數據的處理效果更好。