之前評估現有相關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
參考
Plan your adoption of In-Memory OLTP Features in SQL Server
Do you make right way for benchmark in-memory OLTP
In-Memory OLTP Series – Data migration guideline process on SQL Server 2016