آموزش پیشرفته SQL Server (جلسه سوم) - آشنایی با In-Memory OLTP

آشنایی با In-Memory OLTP، قسمتی از آموزش پیشرفته SQL Server است، پیشنهاد می شود قبل از مطالعه ی آشنایی با In-Memory OLTP، قسمت های قبلی را مطالعه فرمایید.


In-Memory OLTP چیست؟

هدف: امکان تعریف Stored Procedure روی Memory Optimize Table ها.

ترکیبی از Memory Optimize Table ها و Native Compile Stored Procedure ها می باشد و به دلیل اینکه Stored Procedure های ایجاد شده روی Memory Optimize Table ها به دلیل ماهیت این جداول نمی توانند در پایگاه داده ذخیره شوند، به همین دلیل در ابتدای ایجاد کمپایل شده و به صورت dll ذخیره می شوند و با هر بار فراخوانی این فایل dll مورد استفاده قرار می گیرد. موارد زیر را می توان در مورد In-Memory OLTP بیان نمود:

  • یکی از اجزاء DB Engine می باشد.
  • قرار دادن جداول در Memory و در نتیجه عدم استفاده از Buffer Pool.
  • افزایش کارایی و کاهش زمان اجرای کوئری ها.
  • تاخیر کمتر در انجام عملیات CRUD روی داده.
  • Lock Free & Latch Free به معنای آنکه از Locking و قفل کردن جداول حین عملیات استفاده نمی شود.
  • کاهش Blocking و افزایش همروندی - Concurrency

 معماری In-Memory OLTP

معماری In-Memory OLTP به شکل زیر است:آشنایی با In-Memory OLTP

هر درخواستی که به Sql Server داده می شود از طریق پروتکل TDS به آن می رسد و این پروتکل بسته به اینکه نوع درخواست از نوع Native است یا Interpret مسیر حرکت را تعیین می نماید.


مزایای  استفاده از In-Memory OLTP:

  • عدم درگیر شدن با Buffer Pool
  • افزایش سرعت زیاد - گاهی تا سی برابر
  • Lock Free & Latch Free

نحوه ایجاد In-Memory OLTP

در مرحله اول باید پایگاه دادهای را با ساختاری که استفاده از In-Memory OLTP را پشتیبانی کند را داشته باشیم برای اینکار طبق دستورات زیر این پایگاه داده را ایجاد می نماییم:

آشنایی با In-Memory OLTP

CREATE DATABASE HKDB
ON
PRIMARY(NAME = [HKDB_data],
FILENAME = 'Q:\data\HKDB_data.mdf', size=500MB),
FILEGROUP [SampleDB_mod_fg] CONTAINS MEMORY_OPTIMIZED_DATA
(NAME = [HKDB_mod_dir],
FILENAME = 'R:\data\HKDB_mod_dir'),
(NAME = [HKDB_mod_dir],
FILENAME = 'S:\data\HKDB_mod_dir')
 LOG ON (name = [SampleDB_log], Filename='L:\log\HKDB_log.ldf', size=500MB)

در صورتیکه پایگاه داده از قبل موجود بود کافیس با استفاده از دستور زیر آنرا برای داشتن In_Memory OLTP تغییر دهیم:

آشنایی با In-Memory OLTP

ALTER DATABASE AdventureWorks2012
ADD FILEGROUP hk_mod CONTAINS MEMORY_OPTIMIZED_DATA;
11

GO
ALTER DATABASE AdventureWorks2012
ADD FILE (NAME='hk_mod', FILENAME='c:\data\hk_mod')
TO FILEGROUP hk_mod;
GO

در گام بعدی اقدام به ساخت جدول می کنیم:

توجهدر تعریف جدول تنها می توان از انواع داده ای زیر استفاده نمود:

آشنایی با In-Memory OLTP

آشنایی با In-Memory OLTP

CREATE TABLE T1
(
[Name] varchar(32) not null PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 100000),
[City] varchar(32) null,
[State_Province] varchar(32) null,
[LastModified] datetime not null,
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);

توجه: در اینجا لازم است به این نکته اشاره شود که تنها می توان قیود - Constraint زیر را برای جداول  In_Memory OLTP در نظر گرفت:

  • کلید خارجی و یا Constraint مربوط به آن را پشتیبانی نمی کند.
  • به غیر Primary Key هیچ Unique Key دیگر را نمی توان در جداول In_Memory OLTP تعریف نمود.
  • با در نظر گرفتن index مربوط به Primary Key حداکثر 8 ایندکس-index می توان برای آن تعریف کرد.

در شکل زیر ساختار هر ردیف - row در جداول In_Memory OLTP آمده است:

آشنایی با In-Memory OLTP

فیلد اول Begin Time Stamp و دوم End Time Stamp در سرآیند محدوده زمانی که ردیف مربوطه اعتبار دارد را نشان می دهند. فیلد سوم شناسه ردیف و بقیه فیلدهای آن لینکهایی به فایلهای ایندکس می باشند.

برای مطالعه بیشتر می توانید به https://msdn.microsoft.com/en-us/library/dn511014.aspx مراجعه نمایید.


در ادامه بحث آشنایی با In-Memory OLTPخواهید دید...!

1-آشنایی کامل با In-Memory OLTP 

2- آموزش جامع نحوه انجام تنظیمات پایگاه داده برای استفاده از In-Memory OLTP همراه با مثال کاربردی


دسترسی به موارد آموزشی بالا در بسته خریداری شده

  • شماره جلسه: 3
  • نام فایل ویدئو: 01
  • فرمت فایل: mp4.

نقطه شروع بحث بالا (آشنایی با In-Memory OLTP) در ویدئو:  33:30


برای خرید و دانلود کاملآموزش پیشرفته SQL Server کلیک کنید.

READ MORE