首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2014 記憶體優化資料表與原生編譯預存程序實戰指南

     編輯:關於SqlServer

記憶體優化資料表兩種持久性模式

  • 持久 (SCHEMA_AND_DATA):預設,資料同時在記憶體與磁碟(檢查點檔案),支援 ACID,重啟後自動從磁碟載入。
  • 非持久 (SCHEMA_ONLY):僅結構持久,資料不寫磁碟,極速但崩潰會丟失,適用暫存/階段資料。

建立持久記憶體優化表

CREATE TABLE DurableTbl (
    AccountNo INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 28713),
    CustName VARCHAR(20) NOT NULL,
    Gender CHAR(1) NOT NULL,
    CustGroup VARCHAR(4) NOT NULL,
    Addr VARCHAR(50) NULL,
    Phone VARCHAR(10) NULL
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);

建立非持久表

CREATE TABLE NonDurableTbl (...)
WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY);

原生編譯預存程序

編譯為機器碼 DLL,免解譯,大幅提升執行效率:

CREATE PROCEDURE dbo.usp_InsertNonDurableTbl
    @AccountNo INT, @CustName NVARCHAR(20), @Gender CHAR(1),
    @CustGroup VARCHAR(4), @Addr VARCHAR(50), @Phone VARCHAR(10)
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH (
    TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'English'
)
    INSERT INTO dbo.DurableTbl (...) VALUES (...);
END;

架構圖解

記憶體優化表與傳統磁碟表共存,存取路徑分離(圖 1)。

記憶體資料庫架構

圖 1. 記憶體優化表與傳統表存取架構

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved