使用經記憶體最佳化的資料表的需求
適用於:SQL Server
本文說明在 SQL Server 中採用記憶體內部功能的需求。
需求
除了 SQL Server 2022:硬體與軟體需求之外,使用記憶體內部 OLTP 還需要滿足下列需求:
任何版本的 SQL Server 2016 (13.x) SP 1 和更新版本。 對於 SQL Server 2014 (12.x) 及 SQL Server 2016 (13.x) RTM (SP1 以前的版本),您需要 Enterprise、Developer 或 Evaluation 版本。
記憶體內部 OLTP 需要 64 位元版本的 SQL Server。
SQL Server 需要有足夠的記憶體來容納經記憶體最佳化的資料表和索引中的資料,也需要額外的記憶體來支援線上工作負載。 如需詳細資訊,請參閱 估計記憶體最佳化資料表的記憶體需求。
在虛擬機器 (VM) 中執行 SQL Server 時,請確認配置給 VM 的記憶體,足以支援記憶體最佳化資料表和索引所需的記憶體。 視 VM 主應用程式而定,保證配置記憶體給 VM 的組態選項可稱為「保留的記憶體」;使用動態記憶體時,則稱為「RAM 下限」。 請確認這些設定足以因應 SQL Server 中的資料庫需求。
釋放持久的記憶體最佳化資料表大小的兩倍磁碟空間。
處理器需要支援指令
cmpxchg16b
以使用記憶體內部 OLTP。 所有新型 64 位元處理器都支援cmpxchg16b
。如果您使用虛擬機器,而 SQL Server 顯示由較舊處理器所造成的錯誤,請查看 VM 主應用程式是否有允許
cmpxchg16b
的組態選項。 如果沒有,您可以使用 Hyper-V,它可以支援cmpxchg16b
,而不需要修改組態選項。記憶體內部 OLTP 會安裝為 Database Engine Services 的一部分。
若要安裝報表產生功能 (判斷是否應將資料表或預存程序移植到記憶體內部 OLTP) 以及 SQL Server Management Studio (透過 SQL Server Management Studio 物件總管來管理記憶體內部 OLTP),請下載 SQL Server Management Studio (SSMS)。
注意
- 如需 Azure SQL 中記憶體內部資料的特定詳細資訊,請參閱在 Azure SQL Database 和 Azure SQL 受控執行個體中使用記憶體內部技術將效能最佳化,以及部落格:Azure SQL Database 中的記憶體內部 OLTP。
- 如需 Azure SQL 中記憶體內部資料的特定詳細資訊,請參閱在 Azure SQL Database 和 Azure SQL 受控執行個體中使用記憶體內部技術將效能最佳化,以及部落格:Azure SQL Database 中的記憶體內部 OLTP。
使用記憶體內部 OLTP 的重要注意事項
在 SQL Server 2016 (13.x) 和更新版本中,經記憶體最佳化的資料表除了可用的記憶體之外,沒有大小限制。
在 SQL Server 2014 (12.x) 中,資料庫內所有耐久資料表的記憶體中大小總計,不應超過 250 GB。 如需詳細資訊,請參閱 估計記憶體最佳化資料表的記憶體需求。
注意
自 SQL Server 2016 (13.x) SP 1 開始,Standard 和 Express 版本支援記憶體內部 OLTP,但這些版本會徵用可用於指定資料庫的記憶體最佳化資料表的記憶體數量配額。 Standard 版本是每個資料庫 32 GB,Express 版本是每個資料庫 352 MB。
如果您建立一或多個具有記憶體最佳化資料表的資料庫,即應將 SE_MANAGE_VOLUME_NAME 使用者權限授與 SQL Server 服務啟動帳戶,以啟用檔案立即初始化 (IFI)。 如果沒有 IFI,記憶體最佳化儲存體檔案 (資料與差異檔案) 將在建立時進行初始化,而如此可能會對工作負載的效能產生負面的影響。 如需 IFI 的詳細資訊及啟用方式,請參閱資料庫檔案立即初始化。
-
已知問題:對於具有經記憶體最佳化的資料表之資料庫,執行具有不復原功能的交易記錄備份,並稍後執行具有復原功能的交易記錄還原,此種做法可能會導致資料庫還原程序沒有回應。 此問題也會影響記錄傳送功能。 若要解決此問題,可以先重新啟動 SQL Server 執行個體再開始還原程序。