iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 23
1
Everything on Azure

三十天.NET❤️Azure漸進式開發專案系列 第 23

三十天.NET與Azure漸進式開發專案(23): Azure自動化調校資料庫

2018-10-28.21.13.08-image.png

 前面介紹完.NET開發者如何在Azure Debug,今天進階研究調校效能。

 上線專案如何追蹤效能瓶頸,如何改善是一件專業、而且困難的事情。諸如:資料庫慢查詢,沒有建立有效索引,沒有使用快取造成資料庫負擔等。

 而 Azure 同樣提供AI自動化服務,讓我們可以省下一些複雜動作,做到調校資料庫 SQL DataBase 效能目的,這就是Automatic Tuning功能


【舉例1:幫忙建立索引】

現在有一個文章表格post,資料結構:

ID,發布日期(pubdate),標題(Title),內容(Cotent)  

故意在ID欄位不建立PK索引,使用執行計畫查詢,可以發現使用全表格掃描沒有任何優化動作。
2018-10-28.20.40.48-image.png

接著到Azure DataBase開啟自動建立索引功能:
【步驟1】打開Azure SQL DataBase > Automatictuning
【步驟2】將CREATE INDEX 設為INHERIT,由系統自動優化、建立索引。
【步驟3】設定完後,點擊 Apply 保存設定。
2018-10-28.20.44.07-image.png

等待系統跑一段時間後,Azure會自動使用AI統計判斷,那些表格資料需要建立索引。

等待建立完成後,再一次使用執行計畫驗證之前的查詢
登登登,可以發現系統使用叢集索引搜尋優化查詢。
2018-10-28.20.45.33-image.png


【舉例2:刪除多餘沒用的索引】

故意在post表格建立日期欄位,建立兩個索引:

CREATE INDEX IDX_post_pubdate1 ON post (pubdate);  
CREATE INDEX IDX_post_pubdate2 ON post (pubdate);  

接著到Azure DataBase開啟自動管理刪除索引功能:
DROP INDEX 設為INHERIT,由系統提供優化、刪除索引建議。  
2018-10-28.21.20.24-image.png

接著等Azure統計一段時間後,可以在Performance recommendations看到刪除重複Index的建議:
2018-10-29.22.16.04-image.png

點開建議,可以看原因細節,接著同意刪除,系統自動將重複的索引刪除。
2018-10-29.22.19.11-image.png
2018-10-28.21.10.50-image.png

另外DROP INDEX 功能有幾點要注意:

  • 刪除的索引不包含唯一索引
  • 刪除長時間未使用的索引(大於90天)

以上示範雖然看似簡單,讀者可能覺得人工調校就可以,但是在實際複雜環境中,要調校資料庫是複雜的一件事,如表格多,外鍵連結複雜問題,而現在我們可以利用Azure來輔助幫忙,省掉許多人工判斷、維護成本,筆者覺得可以嘗試看看。


上一篇
三十天.NET與Azure漸進式開發專案(22): 解決初始化異常-使用Kudu、FTP調查eventlog.xml
下一篇
三十天.NET與Azure漸進式開發專案(24): 資料庫讀寫分離 Azure SQL Database Sync
系列文
三十天.NET❤️Azure漸進式開發專案30

尚未有邦友留言

立即登入留言