[SQL Server]AlwaysOn with In-Memory OLTP

SQL2016 AlwaysOn的redo log效能和log傳送吞吐量有很大改善(是SQL2014的4~5倍),

這篇來回顧一下AlwaysOn和In-Memory OLTP一些注意事項。

 

之前我在SQL PASS分享個人使用In-Memory OLTP+AlwaysOn經驗,

使用上和disk table並無差異,但還是有些In-Memory OLTP特性必須要考量進去。

 

Enhance speed failover to secondary on AG

In-Memory OLTP和AlwaysOn整合相當不錯,以往你可以使用的功能,

那怕資料庫有包含In-Memory table也都可正常使用,

值得一提的是轉移到次要複本時間比disk table快10%左右,

因為不像disk table還需要recovery,Memory table的資料變更都會使用記憶體方式套用在次要複本,

由於資料已經都在記憶體中,所以移轉至次要複本會較快速。

 

AG同步模式會影響In-Memory table交易效能(SP1 CU5修正)

如同一開始提到SQL2014 AlwaysOn的redo log和log傳送吞吐量效能不如SQL2016,

再加上使用記憶體方式傳送資料應該也很快,

所以當初我認為使用AG同步模式應該不會影響In-Memory table交易效能,

但沒想到AG同步模式有時卻拖跨In-Memory table交易效能(Transactions:Transactions /sec),

後來該問題證實為bug並在SP1 CU5修正。

 

AlwaysOn failover cluster instance 速度不佳

由於FCI提供WFSC節點的容錯移轉(shared-storage的高可用性),

但如果包含大In-Memory table將大幅影響RTO,

這是因為需要先從檔案讀取,後載入記憶體完成後,資料庫才可正常存取,

載入時間取決於資料表資料量、data/delta 檔案數量、IOPS和可用CPU數量。

 

另外,我也使用sqlops建立關於AG的幾張dashboard,方便我快速知道AG狀態

目前我已經建立不少dashboard,sqlops真的好威

 

P.S

我對dashboard提出了一些想法,大家如果也覺得不錯的話,請幫我支持這些新功能,謝謝

Feature request: provide refresh interval,alert and sections for dashboard

 

參考

Monitor SQL Server AlwaysOn Availability Groups

Monitor Availability Groups (Transact-SQL)

sql server operations studio first touch

When disks have different sector sizes for primary and secondary replica log files in an AlwaysOn Availability Group Config

Performance monitoring of AlwaysOn Availability Groups – Part 1

Measuring Availability Group synchronization lag

In-Memory OLTP: High Availability for Databases with Memory-Optimized Tables

High Availability Support for In-Memory OLTP databases

The Memory Optimized Filegroup

SQL SERVER – Faster Application Performance with In-Memory OLTP

Compare SQL Server Performance of In-Memory vs Disk Tables

FIX: Performance drop when using In-Memory OLTP with Always On availability groups in SQL Server 2016 or 2017