खोज…


मेमोरी ऑप्टिमाइज्ड टेबल बनाएं

-- Create demo database
CREATE DATABASE SQL2016_Demo
 ON  PRIMARY
( 
    NAME = N'SQL2016_Demo', 
    FILENAME = N'C:\Dump\SQL2016_Demo.mdf', 
    SIZE = 5120KB, 
    FILEGROWTH = 1024KB 
 )
 LOG ON 
 ( 
    NAME = N'SQL2016_Demo_log', 
    FILENAME = N'C:\Dump\SQL2016_Demo_log.ldf', 
    SIZE = 1024KB, 
    FILEGROWTH = 10%
 )
GO

use SQL2016_Demo
go

-- Add Filegroup by MEMORY_OPTIMIZED_DATA type 
ALTER DATABASE SQL2016_Demo 
    ADD FILEGROUP MemFG CONTAINS MEMORY_OPTIMIZED_DATA 
GO


--Add a file to defined filegroup
ALTER DATABASE SQL2016_Demo ADD FILE
    ( 
        NAME = MemFG_File1,
        FILENAME = N'C:\Dump\MemFG_File1' -- your file path, check directory exist before executing this code
    ) 
TO FILEGROUP MemFG
GO

--Object Explorer -- check database created
GO

-- create memory optimized table 1
CREATE TABLE dbo.MemOptTable1  
(  
    Column1     INT         NOT NULL,  
    Column2     NVARCHAR(4000)  NULL,  
    SpidFilter  SMALLINT    NOT NULL   DEFAULT (@@spid),  

    INDEX ix_SpidFiler NONCLUSTERED (SpidFilter),  
    INDEX ix_SpidFilter HASH (SpidFilter) WITH (BUCKET_COUNT = 64),  
      
    CONSTRAINT CHK_soSessionC_SpidFilter  
        CHECK ( SpidFilter = @@spid ),  
)  
    WITH  
        (MEMORY_OPTIMIZED = ON,  
         DURABILITY = SCHEMA_AND_DATA);  --or DURABILITY = SCHEMA_ONLY
go  

-- create memory optimized table 2
CREATE TABLE MemOptTable2
(
    ID INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 10000),
    FullName NVARCHAR(200) NOT NULL, 
    DateAdded DATETIME NOT NULL
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA)
GO

मेमोरी ऑप्टिमाइज़्ड टेबल्स के लिए निर्मित .dll फाइलें और टेबल दिखाएं

SELECT
    OBJECT_ID('MemOptTable1') AS MemOptTable1_ObjectID,
    OBJECT_ID('MemOptTable2') AS MemOptTable2_ObjectID
GO

SELECT 
    name,description 
FROM sys.dm_os_loaded_modules
WHERE name LIKE '%XTP%'
GO

सभी मेमोरी ऑप्टिमाइज़्ड टेबल्स दिखाएँ:

SELECT 
    name,type_desc,durability_desc,Is_memory_Optimized 
FROM sys.tables
    WHERE Is_memory_Optimized = 1
GO

मेमोरी-ऑप्टिमाइज्ड टेबल टाइप और टेम्प टेबल्स

उदाहरण के लिए, यह पारंपरिक टेम्पर्ड-बेस्ड टेबल प्रकार है:

CREATE TYPE dbo.testTableType AS TABLE
(
   col1 INT NOT NULL,
   col2 CHAR(10)
);

इस तालिका प्रकार को मेमोरी-ऑप्टिमाइज़ करने के लिए बस memory_optimized=on का विकल्प जोड़ें, और यदि कोई ऑरिजनल नहीं है तो एक इंडेक्स जोड़ें:

CREATE TYPE dbo.testTableType AS TABLE
(
   col1 INT NOT NULL,
   col2 CHAR(10)
)WITH (MEMORY_OPTIMIZED=ON);

वैश्विक अस्थायी तालिका इस प्रकार है:

CREATE TABLE ##tempGlobalTabel 
(  
    Col1   INT   NOT NULL ,  
    Col2   NVARCHAR(4000)  
);  

मेमोरी-अनुकूलित वैश्विक अस्थायी तालिका:

CREATE TABLE dbo.tempGlobalTabel 
(  
    Col1   INT   NOT NULL   INDEX ix NONCLUSTERED,  
    Col2   NVARCHAR(4000)  
)  
    WITH  
        (MEMORY_OPTIMIZED = ON,  
         DURABILITY = SCHEMA_ONLY);  

वैश्विक अस्थायी तालिकाओं को याद करने के लिए (## अस्थायी):

  1. वैश्विक ##temp तालिका के समान स्कीमा के साथ एक नया SCHEMA_ONLY स्मृति-अनुकूलित तालिका बनाएं
    • सुनिश्चित करें कि नई तालिका में कम से कम एक सूचकांक है
  2. अपने Transact-SQL कथनों में ##temp सभी संदर्भों को नई मेमोरी-ऑप्टिमाइज़ किए गए तालिका अस्थायी में बदलें
  3. अपने कोड में DROP TABLE ##temp विवरणों को सामग्री से साफ करने के लिए DELETE FROM temp बदलें
  4. अपने कोड से CREATE TABLE ##temp स्टेटमेंट निकालें - ये अब बेमानी हैं

अधिक जानकारियां

मेमोरी-ऑप्टिमाइज्ड टेबल वेरिएबल्स को डिक्लेयर करें

तेज़ प्रदर्शन के लिए आप अपने टेबल चर को मेमोरी-ऑप्टिमाइज़ कर सकते हैं। यहाँ एक पारंपरिक तालिका चर के लिए T-SQL है:

DECLARE @tvp TABLE  
( 
    col1   INT NOT NULL ,  
    Col2   CHAR(10) 
);  

स्मृति-अनुकूलित चर को परिभाषित करने के लिए, आपको पहले एक मेमोरी-अनुकूलित तालिका प्रकार बनाना होगा और फिर उसमें से एक चर घोषित करना होगा:

CREATE TYPE dbo.memTypeTable 
AS TABLE  
(  
    Col1  INT NOT NULL INDEX ix1,  
    Col2  CHAR(10)  
)  
WITH  
    (MEMORY_OPTIMIZED = ON);  

तब हम तालिका प्रकार का उपयोग कर सकते हैं:

DECLARE @tvp memTypeTable
insert INTO @tvp
values (1,'1'),(2,'2'),(3,'3'),(4,'4'),(5,'5'),(6,'6')

SELECT * FROM @tvp

परिणाम:

Col1    Col2
1       1         
2       2         
3       3         
4       4         
5       5         
6       6        

मेमोरी ऑप्टिमाइज्ड सिस्टम-वर्जन टेम्पोरल टेबल बनाएं

CREATE TABLE [dbo].[MemOptimizedTemporalTable]
(
    [BusinessDocNo] [bigint] NOT NULL,
    [ProductCode] [int] NOT NULL,
    [UnitID] [tinyint] NOT NULL,
    [PriceID] [tinyint] NOT NULL,
    [SysStartTime] [datetime2](7) GENERATED ALWAYS AS ROW START NOT NULL,
    [SysEndTime] [datetime2](7) GENERATED ALWAYS AS ROW END NOT NULL,
    PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime]),

    CONSTRAINT [PK_MemOptimizedTemporalTable]  PRIMARY KEY NONCLUSTERED 
    (
        [BusinessDocNo] ASC,
        [ProductCode] ASC
    )
)
WITH ( 
    MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA, -- Memory Optimized Option ON
    SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[MemOptimizedTemporalTable_History] , DATA_CONSISTENCY_CHECK = ON ) 
)

अधिक जानकारियां



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow