Microsoft SQL Server
इन-मेमरी ओएलटीपी (हेकटन)
खोज…
मेमोरी ऑप्टिमाइज्ड टेबल बनाएं
-- 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);
वैश्विक अस्थायी तालिकाओं को याद करने के लिए (## अस्थायी):
- वैश्विक
##temp
तालिका के समान स्कीमा के साथ एक नयाSCHEMA_ONLY
स्मृति-अनुकूलित तालिका बनाएं- सुनिश्चित करें कि नई तालिका में कम से कम एक सूचकांक है
- अपने Transact-SQL कथनों में
##temp
सभी संदर्भों को नई मेमोरी-ऑप्टिमाइज़ किए गए तालिका अस्थायी में बदलें - अपने कोड में
DROP TABLE ##temp
विवरणों को सामग्री से साफ करने के लिएDELETE FROM temp
बदलें - अपने कोड से
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