資料庫優化實踐【TSQL篇】

黄舟
發布: 2016-12-16 17:17:36
原創
930 人瀏覽過

  資料庫最佳化實務【TSQL篇】
  在前面我們介紹如何正確使用索引,調整索引是見效最快的效能調優方法,但一般而言,調整索引只會提高查詢效能。除此之外,我們還可以調整資料存取程式碼和TSQL,本文就介紹如何以最優的方法重構資料存取程式碼和TSQL。

  四步:將TSQL程式碼從應用程式移轉到資料庫

  也許你不喜歡我的這個建議,你或你的團隊可能已經有一個預設的潛規則,那就是使用ORM(Object Relational Mapping,即物件關係映射)產生所有SQL,並將SQL放在應用程式中,但如果你要優化資料存取效能,或需要偵錯應用程式效能問題,我建議你將SQL程式碼移植到資料庫上(使用預存過程,視圖,函數和觸發器),原因如下:

  1、使用預存過程,視圖,函數和觸發器實現應用程式中SQL程式碼的功能有助於減少應用程式中SQL複製的弊端,因為現在只在一個地方集中處理SQL,為往後的程式碼重複使用打下了良好的基礎。

  2、使用資料庫物件實作所有的TSQL有助於分析TSQL的效能問題,同時有助於你集中管理TSQL程式碼。

  3、將TS QL移植到資料庫上去後,可以更好地重構TSQL程式碼,以利用資料庫的高階索引特性。此外,應用程式中沒了SQL程式碼也將更加簡潔。

  雖然這一步可能不會像前三步那樣立竿見影,但做這一步的主要目的是為後面的優化步驟打下基礎。如果在你的應用程式中使用ORM(如NHibernate)實現了資料存取例行程序,在測試或開發環境中你可能發現它們運作得很好,但在生產資料庫上卻可能遇到問題,這時你可能需要反思基於ORM的資料存取邏輯,利用TSQL物件實現資料存取例行程序是個好辦法,這樣做有更多的機會從資料庫角度來優化效能。

  我向你保證,如果你花1-2人月來完​​成遷移,那以後肯定不止節約1-2人年的成本。

  OK!假設你已經照我的做的了,完全將TSQL遷移到資料庫上去了,下面就進入正題吧!

  

第五步:識別低TSQL,採用最佳實踐效重構和應用TSQL

  由於每個程式設計師的能力和習慣都不一樣,他們編寫的TSQL可能風格各異,部分程式碼可能不是最佳實現,對於水平一般的程式設計師可能首先想到的是編寫TSQL實現需求,至於效能問題日後再說,因此在開發和測試時可能發現不了問題。

  也有一些人知道最佳實踐,但在編寫程式碼時由於種種原因沒有採用最佳實踐,等到用戶發飆的那天才乖乖地重新埋頭思考最佳實踐。

  我覺得還是有必要介紹一下具有都有哪些最佳實踐。

  1、在查詢中不要使用「select *」

  (1)檢索不必要的列會帶來額外的系統開銷,有句話叫做「該省的則省」;

  (2)資料庫不能利用「覆蓋索引」的優點,因此查詢緩慢。

  2、在select清單中避免不必要的列,在連接條件中避免不必要的表

 以上就是資料庫優化實踐【TSQL篇】的內容,更多相關文章請關注PHP中文網(www.php .cn)! 


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!