۳.۴
(۵)

مفهوم Instant File Initialization در SQL Server، در این مقاله قصد داریم شما رو با مفهوم Instant Initialization که مبحث مهمی در Performance پایگاه داده SQL Server است، آشنا کنیم. فایل های دیتا و لاگ هنگام انجام هر یک از اعمال زیر آماده سازی اولیه (File Initialization) می شوند. تا داده هایی که از فایل های پاک شده روی دیسک باقی مانده با مقدار صفر رونویسی شوند.

  • ایجاد دیتابیس
  • اضافه کردن فایل داده یا لاگ به دیتابیس
  • افزایش اندازه یک فایل موجود (شامل عملیات auto growth هم می شود)
  • restore یک دیتابیس  یا Filegroup

مفهوم Instant File Initialization در SQL Server

File Initialization باعث می شود تا انجام این عملیات طولانی تر شود. SQL Server می تواند از این فرآیند صرفنظر کند و بدون رونویسی فضای تخصیص داده شده با صفر، فوراً آن را تخصیص دهد. کلمه Instant به معنی “فوری” است.  Instant Initialization قابلیتی است که در SQL Server 2005 ارائه شد.  Instant Initialization بر اساس قابلیتی است که به NTFS در ویندوز XP اضافه شد و به تبع آن در Windows Server 2003 هم قابل استفاده است. Instant Initialization به ما اجازه میدهد تا SQL Server درخواست تخصیص فضای ذخیره سازی از فرآیند پر کردن فضای تخصیص داده شده با صفر صرف نظر کند.  به این فرآیند Zero Initialization گفته می شود. بنابراین فارغ از اندازه فضای تخصیص داده شده در فایل داده ای فرآیند تخصیص می تواند به سرعت و فوری انجام شود.
SQL Server فرآیند نادیده گرفتن Zero Initialization را تنها می تواند در مورد DATA File ها اعمال کند. Zero Initialization در مورد transaction log اجباری است چون طبیعت این فایل چرخشی است یعنی پس از رسیدن به انتهای فایل SQL Server دوباره از ابتدای فایل شروع به رونویسی روی لاگ های قدیمی می کند (به این عمل Warp-around هم گفته می شود) و علت اجباری بودن هم مربوط به روند اجرای recovery است که فایل لاگ را می خواند و با رسیدن به مقدار صفر به این فرآیند خاتمه می دهد (این موضوع را در یک مقاله دیگر پوشش می دهم). برای فعال کردن قابلیت Instant Initialization باید به اکانت سرویس SQL Server مجوز “Perform Volume Maintenance Tasks” داده شود. شما می‌توانید کوئری نویسی را به صورت گام‌به‌گام از نیک آموز فرا بگیرید. 

فعال کردن قابلیت Instant Initialization در SQL Server

در این بخش می خواهیم نحوه فعال کردن این قابلیت در SQL Server را برای شما علاقه مندان به پایگاه داده توضیح دهیم:

۱- در Command prompt دستور secpol.msc را وارد کنید تا این پنجره ظاهر شود و سپس مسیر  Local Policies > User Rights Assignment را دنبال کنید:
۲- روی گزینه Perform Volume Maintenance Tasks راست کلیک کنید و Properties را انتخاب کنید تا این کادر ظاهر شود:
۳- روی Add User Group کلیک کنید و سپس در این کادر سرویسی که SQL Server با آن در حال اجراست را وارد کنید:
۴- سرویس SQL Server را Restart کنید.
پیدا کردن اکانت سرویس SQL Server می توانید از اسکریپت زیر استفاده کنید:

DECLARE @DBEngineLogin VARCHAR(100)
EXECUTE master.dbo.xp_instance_regread
@rootkey = N'HKEY_LOCAL_MACHINE',
@key = N'SYSTEMCurrentControlSetServicesMSSQLServer',
@value_name = N'ObjectName',
@value = @DBEngineLogin OUTPUT
SELECT [DBEngineLogin] = @DBEngineLogin


 
برای تست تاثیر فعال کردن می توانید این اسکریپت را قبل و بعد از فعال کردن اجرا کنید:
CREATE DATABASE TestDatabase ON PRIMARY
(
NAME = N'TestDatabase',
FILENAME = N'G:SQLDATATestDatabase.mdf' ,
SIZE = 51200000KB ,
FILEGROWTH = 1024KB
)
LOG ON
(
NAME = N'TestDatabase_log',
FILENAME = N'G:SQLLogTestDatabase_log.ldf' ,
SIZE = 1024KB ,
FILEGROWTH = 10%
)
GO

برای ساخت دیتابیس بالا SQL Server باید ۵۰ GB مقدار ۰ را روی دیسک بنویسد! و البته این کار با فراخوانی یک تابع API ویندوز به نام SetFileValidData انجام می شود. افراد علاقه‌مند می‌توانند با مطالعه مقاله پرکاربردترین دستورات SQL Server، دانش خود را در زمینه کوئری‌نویسی گسترش دهند.
در تصویر زیر که لاگ SQL است میتوانید از یک نمونه فرآیند ساخت دیتابیس تا قبل از دادن مجوز Perform Volume Maintenance Tasks به اکانت SQL Server را مشاهده می کنید و همانطور که می بینید پر کردن با صفر هم برای فایل داده ای و هم لاگ انجام شده است.

سخن پایانی

مفهوم Instant File Initialization در SQL Server، پس از دادن مجوز Perform Volume Maintenance Tasks و فعال کردن دو trace flag با شماره های ۳۰۰۴ و ۳۶۰۵ (با دستور DBCC TRACEON (۳۶۰۵)) و اجرای مجدد اسکریپت ساخت دیتابیس می توانید در لاگ SQL Server در عکس زیر ببینید که فرآیند Zeroing فقط برای لاگ دیتابیس انجام شده است. همچنین تاثیر حذف این مجوز پس از reboot اعمال می شود. ما در نیک آموز منتظر نظرات ارزشمند شما درباره این مقاله هستیم.

چه رتبه ای می‌دهید؟

میانگین ۳.۴ / ۵. از مجموع ۵

اولین نفر باش