2010-03-11 40 views
2

我試圖插入數千行到一個表中,並且性能是不可接受的。特定表上的行每行需要300毫秒才能插入。如何剖析和解決插入/更新性能問題?

我知道存在的工具來分析查詢對SQL Server(SQL服務器配置文件,數據庫引擎優化顧問)運行,但我怎麼會簡介INSERT和UPDATE語句來決定運行緩慢插入?我在查詢運行時被迫使用perfmon,並用計數器推斷出問題?

回答

2

我會首先檢查單個插入的查詢計劃,以瞭解與該操作相關的成本 - 從插入是否從其他位置選擇數據的問題不知道。

我然後檢查表索引爲以下:

  • 多少索引已到位(除了過濾索引,每個索引將被插入到爲好)
  • 聚簇索引是否是目前還是我們正在插入一堆。
  • 如果聚集索引鍵意味着我們將在表的末尾獲得熱點好處或導致大量的頁面拆分。

這是所有基於SQL架構的問題,假設SQL中沒有問題,您可以開始檢查磁盤IO計數器以檢查磁盤隊列長度和響應時間。不要忘記日誌驅動器響應時間,因爲每個插入操作都將被記錄。

這類問題非常難以確定,因爲任何1個說明性的東西/銀子彈都可以提供建議,只是你應該檢查的一系列事情。

0

我敢打賭,問題是與選擇,而不一定是更新。您是否嘗試過分析更新語句的選擇部分以確保首先沒有問題?