فعالسازی حالت Snapshot در Microsoft SQL Server
مقدمه
در محیطهای مبتنی بر Microsoft SQL Server، یکی از چالشهای رایج که میتواند بر عملکرد سامانههای سازمانی تأثیر بگذارد، مسئله Locking و Blocking در سطح پایگاه داده است. هنگامی که چندین کاربر بهصورت همزمان در حال خواندن و نوشتن دادهها هستند، قفلهای پایگاه داده میتوانند باعث ایجاد تأخیر، کندی در پاسخگویی و حتی اختلال در اجرای تراکنشها شوند.
برای کاهش این مشکلات و بهبود کارایی ManageEngine ServiceDesk Plus MSP، میتوان قابلیت Read Committed Snapshot Isolation (RCSI) را در SQL Server فعال کرد. این قابلیت با استفاده از مکانیزم نسخهبرداری (Row Versioning)، خواندن دادهها را از عملیات نوشتن جدا میکند و از بروز تداخل میان تراکنشها جلوگیری میکند.
Snapshot Mode چیست؟
با فعالسازی Read Committed Snapshot:
- یک نسخه فقطخواندنی (Snapshot) از دادهها برای عملیات خواندن ایجاد میشود.
- دستورات
SELECTدادهها را از نسخه Snapshot میخوانند، نه از دیتابیس Live. - عملیات Insert/Update/Delete روی دیتابیس اصلی (Live Database) انجام میشود.
- پس از تکمیل تراکنش، نسخه جدیدی برای خواندن ایجاد میگردد.
به این ترتیب، خواندن دادهها باعث قفل شدن جداول نمیشود و همزمانی کاربران افزایش مییابد.
نحوه فعالسازی Read Committed Snapshot Isolation (RCSI)
⚠ این فرآیند نیازمند توقف سرویس و ایجاد Downtime است. پیشنهاد میشود در بازه زمانی کمترافیک (مانند تعطیلات آخر هفته) انجام شود.
مراحل اجرا:
1️⃣ توقف سرویس
سرویس ServiceDesk Plus MSP را متوقف کنید.
2️⃣ ورود به SQL Server Management Studio
به SSMS متصل شوید.
3️⃣ آفلاین کردن دیتابیس
USE master;
GO
ALTER DATABASE <db_name> SET OFFLINE WITH ROLLBACK IMMEDIATE
GO
4️⃣ فعالسازی RCSI
ALTER DATABASE <db_name> SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE
GO
5️⃣ آنلاین کردن مجدد دیتابیس
USE master;
GO
ALTER DATABASE <db_name> SET ONLINE
GO
6️⃣ بررسی فعال شدن RCSI
SELECT is_read_committed_snapshot_on
FROM sys.databases
WHERE [name] = '<db_name>'
اگر خروجی مقدار 1 باشد، RCSI با موفقیت فعال شده است.
7️⃣ راهاندازی مجدد سرویس
اکنون میتوانید سرویس ServiceDesk Plus MSP را مجدداً اجرا کنید.
مزایای فعالسازی Snapshot Mode در MS SQL
| مزیت | توضیح |
|---|---|
| حذف Blocking در خواندن | عملیات SELECT دیگر باعث قفل شدن جداول نمیشود |
| افزایش همزمانی کاربران | چندین کاربر میتوانند بدون اختلال همزمان کوئری اجرا کنند |
| کاهش Lock Contention | درگیری قفلها به حداقل میرسد |
| پایداری بیشتر در ساعات اوج مصرف | کاهش تأخیر در محیطهای پرترافیک |
| جداسازی فضای خواندن در tempdb | دادههای نسخهبرداریشده در tempdb نگهداری میشوند |
نکات فنی مهم
- با فعالسازی RCSI، مصرف
tempdbافزایش مییابد؛ بنابراین باید فضای کافی برای آن در نظر گرفته شود. - در سیستمهای پرتراکنش، مانیتورینگ tempdb و I/O دیسک توصیه میشود.
- این تنظیم تنها بر سطح Isolation پیشفرض (Read Committed) تأثیر میگذارد و سایر Isolation Levelها را تغییر نمیدهد.
جمعبندی
فعالسازی Read Committed Snapshot Isolation یکی از مؤثرترین روشها برای کاهش مشکلات Locking در SQL Server و افزایش کارایی ServiceDesk Plus MSP است. این تنظیم بهویژه در محیطهایی با تعداد کاربران بالا یا حجم زیاد تراکنشها توصیه میشود.

