2012-03-30 79 views
1

這是一個開放式的面試問題。我無法得到滿意的答案。 現在的問題是:用sql查詢程序解決速度瓶頸問題

如果您試圖修復速度問題,該問題涉及功能需要90秒才能執行,而客戶預計該功能需要不到10秒時間,那麼您將如何解決問題並解決問題?假設該功能有10個查詢,30個計算和3000行代碼分佈在5個模塊中

回答

3

我認爲答案的第一部分是,無論代碼語言是什麼,首先要驗證瓶頸在SQL查詢中,而不是在某些處理中。通過告訴你每種方法花費的時間量,分析器還能夠告訴你哪些查詢花費的時間最多。一旦你得到了,你可以使用數據庫查詢優化器來修復查詢,如果這是問題。

+1

+1配置文件,配置文件,配置文件,那麼我不能說100%的數據庫集中在數據庫上。作爲一名軟件*工程師*,您需要數據才能真正解決任何問題。 – mellamokb 2012-03-30 20:19:10

+0

我想當它說,而不是10secs它需要90秒,這意味着有什麼地方真的出了問題。這也可能是因爲客戶的計算機內存很小。 – 2012-03-30 20:42:02

+1

我想這確實會提出答案的下一部分將是,如果您沒有發現任何明顯的問題,可能由於問題或系統的限制,客戶的期望可能不正確。 – Dave 2012-03-30 20:47:49

1

過於開放式的,但有一些事情你可以嘗試:

  • 確保瞭解客戶的要求,正確

  • 確保你明白的地方的性能瓶頸是在當前設置

  • 確保您在 記

  • 有疑問存在正確的索引
  • 優化DB模式,反規範化在必要時避免聯接

  • 探索緩存和預計算結果如適用作爲一個選項,這樣你就不必查詢數據庫擺在首位。

  • 如果所有的技術途徑被探索或者時間和精力太大,如果需要的話,重新設置客戶的期望值。

1

赫姆...我想嘗試每一個「臺階」隔離,看看他們每個人都是花費的時間執行。我將首先關注SQL,方法是使用分析器運行跟蹤,因爲它們通常需要更長的時間才能運行。一旦我有了價值觀,我會決定下一步。如果我看到Db只是執行時間的10%,例如