SQL Server 2016:內存優化表變得更易用了

jopen 9年前發布 | 12K 次閱讀 SQL Server

 

內存優化表(Memory Optimized Tables)承諾會帶來顯著的性能提升,但往往很難使用。使用困難很大一部分來源于不能改變它的表schema和索引這一事實。

之前的規避措施是創建一張臨時表,把數據復制過來,刪除原來的內存優化表,然后創建并且載入新的內存優化表。對以下操作而言沒必要再這樣做規避了:

  • 改變bucket總數。bucket總數太高會浪費內存,太低則損害性能。
  • 增加和移動索引。請注意在ALTER Table命令之外,無法創建或移動索引。
  • 改變、增加和移動列。
  • 增加和移動約束。

內存優化表通常受限于綁定本地編譯存儲過程的schema。可以用 Schema-bound Dependency圖 來查看一個給定的ALTER語句是否可行。

請注意ALTER TABLE還有一些涉及workload的附加限制:

在開始ALTER TABLE操作之前,要先暫停workload。任何在開始ALTER TABLE操作之前就啟動的用戶事務以及對表的訪問,都會因序列化驗證失敗(錯誤碼41325)而導致ALTER TABLE操作失敗。

本地編譯存儲過程

在2016版本中本地編譯存儲過程也可以更改。當新版本的存儲過程在進行編譯時,將繼續使用原來的版本。一旦編譯完成,執行掛起請求,數據庫切換到新版本上去。

與表一樣,以前更改本地存儲編譯過程要求在創建新的存儲過程之前先刪除已有的存儲過程。在編譯窗口期,這會導致執行失敗。

注意這個特性不能用來在正常的本地編譯存儲過程之間進行轉換。

查看英文原文: SQL Server 2016: Memory Optimized Tables Made Easier

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!