Sdílet prostřednictvím


Vytvořte paměťově optimalizovanou tabulku s časovou verzí systému.

platí pro: SQL Server 2016 (13.x) a novější azure SQL Managed Instance

Podobně jako při vytváření tabulky historie založené na disku můžete vytvořit dočasnou tabulku optimalizovanou pro paměť několika způsoby.

Chcete-li vytvořit tabulky optimalizované pro paměť, musíte nejprve vytvořit skupiny souborů optimalizované pro paměť.

Poznámka

Dočasné tabulky optimalizované pro paměť jsou k dispozici pouze v SQL Serveru a azure SQL Managed Instance. Tabulky optimalizované pro paměť a dočasné tabulky jsou nezávisle dostupné ve službě Azure SQL Database.

Vytvoření dočasné tabulky optimalizované pro paměť s výchozí tabulkou historie

Vytvoření dočasné tabulky s výchozí tabulkou historie je praktickou možností, když chcete řídit pojmenování a stále se spoléháte na systém pro vytvoření tabulky historie s výchozí konfigurací. V následujícím příkladu je nová časově verzovaná tabulka optimalizovaná pro paměť propojená s novou historickou tabulkou založenou na disku.

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)
);

Vytvoření dočasné tabulky optimalizované pro paměť s existující tabulkou historie

Pokud chcete přidat systémovou správu verzí pomocí existující tabulky, můžete vytvořit dočasnou tabulku propojenou s existující tabulkou historie. Tento scénář je užitečný, když chcete migrovat vlastní dočasné řešení na integrovanou podporu. V následujícím příkladu se vytvoří nová dočasná tabulka propojená s existující tabulkou historie.

--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
);