[SQL Server]Make good use of Memory optimization advisor

之前評估現有相關disk table,移轉至In-Memory table需多少記憶體,

我得老實說這還真的無法準確評估,因為未來資料成長量是一個主要因素,

其次則是讀寫頻率也讓人困擾。

資料表記憶體評估,大致上要考慮現有data/index資料量和未來成長量,以及row versions(mandatory for in-memory workloads),

整體記憶體耗用量,還得額外考量資料表變數、sorting(native)、temporal和staging,

慶幸的是,SQL Server有提供Memory optimization Advisor,可以幫我們省下不少單一資料表移轉時間並提供記憶體預估量參考。

先前我介紹了善用交易效能分析報表Native Compilation Advisor,可以幫我預估移轉效益並檢查old sp相容性,

至於資料表部分也有一個Advisor來幫助我們,我很常用它來預估資料表記憶體,

並使用該工具所產生的Script來加以修改,這篇紀錄一下。

 

在想要移轉的disk table,滑鼠右鍵選擇memory optimization advisor

檢查資料表相容性

如果想保留該清單,可以點選Generate Report匯出HTML。

 

記憶體最佳化警告

最下面5個是預設會出現的參考清單,而我們應該要注意黃色警告,

因為這有可能會導致其他物件失敗或產生非預期行為,而且我們也必須修正該警告才能繼續執行下去。

 

確認最佳化選項

請注意記憶體一定要足夠,不然移轉會失敗。

 

確認primary key

這裡我也實際測試過,該Advisor所預估的bucket_count滿準確的,請依需求決定你的索引類型。

 

產生Script

我建議不要透過UI直接migrate,因為通常我比較習慣在review一次,並透過script來執行。

執行成功後,我們就可以看到原本disk table被rename為XXX_old,新的in-memory table為XXXInMemory

 

參考

Memory Optimization Advisor

Plan your adoption of In-Memory OLTP Features in SQL Server

Migrating to In-Memory OLTP

Do you make right way for benchmark in-memory OLTP

In-Memory OLTP Series – Data migration guideline process on SQL Server 2016

Native Compilation Advisor

善用交易效能分析報表