Bagikan melalui


Membuat tabel temporal versi sistem yang dioptimalkan memori

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru Azure SQL Managed Instance

Mirip dengan membuat tabel riwayat berbasis disk, Anda dapat membuat tabel temporal yang dioptimalkan memori dalam beberapa cara.

Untuk membuat tabel yang dioptimalkan memori, Anda harus terlebih dahulu membuat grup file memori yang dioptimalkan.

Nota

Tabel temporal yang dioptimalkan memori hanya tersedia di SQL Server dan Azure SQL Managed Instance. Tabel yang dioptimalkan memori dan tabel temporal tersedia secara independen di Azure SQL Database.

Membuat tabel temporal yang dioptimalkan memori dengan tabel riwayat default

Membuat tabel temporal dengan tabel riwayat default adalah opsi yang nyaman saat Anda ingin mengontrol penamaan dan masih mengandalkan sistem untuk membuat tabel riwayat dengan konfigurasi default. Dalam contoh berikut, tabel temporal yang dioptimalkan memori versi sistem baru ditautkan ke tabel riwayat berbasis disk baru.

CREATE SCHEMA History;
GO

CREATE TABLE dbo.Department (
    DepartmentNumber CHAR(10) NOT NULL PRIMARY KEY NONCLUSTERED,
    DepartmentName VARCHAR(50) NOT NULL,
    ManagerID INT NULL,
    ParentDepartmentNumber CHAR(10) NULL,
    ValidFrom DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
    ValidTo DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
    PERIOD FOR SYSTEM_TIME(ValidFrom, ValidTo)
)
WITH (
    MEMORY_OPTIMIZED = ON,
    DURABILITY = SCHEMA_AND_DATA,
    SYSTEM_VERSIONING = ON (HISTORY_TABLE = History.DepartmentHistory)
);

Membuat tabel temporal yang dioptimalkan memori dengan tabel riwayat yang ada

Anda dapat membuat tabel temporal yang ditautkan ke tabel riwayat yang ada saat Anda ingin menambahkan penerapan versi sistem menggunakan tabel yang sudah ada. Skenario ini berguna ketika Anda ingin memigrasikan solusi temporal kustom ke dukungan bawaan. Dalam contoh berikut, tabel temporal baru dibuat ditautkan ke tabel riwayat yang sudah ada.

--Existing table
CREATE TABLE Department_History (
    DepartmentNumber CHAR(10) NOT NULL,
    DepartmentName VARCHAR(50) NOT NULL,
    ManagerID INT NULL,
    ParentDepartmentNumber CHAR(10) NULL,
    ValidFrom DATETIME2 NOT NULL,
    ValidTo DATETIME2 NOT NULL
);

--Temporal table
CREATE TABLE Department (
    DepartmentNumber CHAR(10) NOT NULL PRIMARY KEY NONCLUSTERED,
    DepartmentName VARCHAR(50) NOT NULL,
    ManagerID INT NULL,
    ParentDepartmentNumber CHAR(10) NULL,
    ValidFrom DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
    ValidTo DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
    PERIOD FOR SYSTEM_TIME(ValidFrom, ValidTo)
)
WITH (
        SYSTEM_VERSIONING = ON (
            HISTORY_TABLE = dbo.Department_History,
            DATA_CONSISTENCY_CHECK = ON
        ),
    MEMORY_OPTIMIZED = ON,
    DURABILITY = SCHEMA_AND_DATA
);