Azure SQL Database自動調整

DBA要失業了!!!

過去資料庫的管理者的日常工作有很大一部份都是在監看資料庫的運作,進行效能調整,而效能調整的方法不外乎依據執行計畫新增或刪除索引。

如今Azure的SQL Database可以將這些工作藉由人工智慧(AI)協助搞定,對一些開發團隊而言,不用再去煩惱資料庫的運作,只要專注在系統開發,讓產品從構思到實際推入市場所用的時間更短(Time to Market)。

很高興在2018/4/1看到Azure的SQL Database透過人工智慧(AI)的方式推出了自動調整的功能,其號稱透過在Azure上數以萬計的Database進行持續的監控並進行水平學習,能夠動態地改善資料庫效能。 而且在開啟自動調整的情況下執行得愈久,自動調整的效果便愈好。

Azure SQL Database 中可用的自動調整選項有:

  1. CREATE INDEX - 能識別可能改善工作負載效能、建立索引,並自動確認已改善查詢效能的索引。
  2. DROP INDEX - 可識別備援和重複的索引,及很長一段時間未使用的索引。 請注意,此選項與使用分割區切換和索引提示的應用程式不相容。
  3. FORCE LAST GOOD PLAN - 可識別使用較前一個良好計畫更為緩慢之執行計畫的 SQL 查詢,以及使用最後一個已知的良好計畫來取代迴歸計畫的查詢。

就讓我們來測試一下是不是有這麼利害,首先在Azure SQL Database要開啟自動調整功能

開啟後連上資料庫,事先建一個測試Table叫myTable,欄位包含姓名、Email、電話等

這個測試Table已經有26,214,400筆資料

目前的索引只有PK欄位是ID

執行查詢時檢查執行計畫馬上會顯示遺漏索引(Missing Index),但我們不想建,測試Azure會不會自動幫我們建立,於是立馬執行1000次

經過約1天的時間,檢查Azure的效能建議,已經自動幫我們建好索引了

索引的類型及欄位就跟遺漏索引一樣,代表Azure的自動調整是將遺漏索引進一步加強變成自動

有時間再來測試Drop Index及Force Last Good Plan,期待在地端的SQL也有這些功能(目前只有Force Last Good Plan可以自動)