راهنمای جامع Query Store Configuration در SQL Server
مقدمه و دامنه این خانواده
راهنمای جامع Query Store Configuration در SQL Server یک نقشه جامع برای شناخت، مقایسه و انتخاب درست 13 موضوع مرتبط با Query Store Configuration است. اعضای این خانواده از ابزارهای مانیتورینگ و Configuration تا Commandهای عملیاتی را پوشش میدهند و هرکدام Scope، Permission و ریسک متفاوتی دارند.
این راهنما برای DBA، Database Developer و مهندس Performance نوشته شده است. پیشنیاز، آشنایی با SQL Server Engine، DMVs، Query Store، Plan Cache و اصول Change Management است.
پس از مطالعه میتوانید اعضای مجموعه را بر اساس هدف، خروجی، ریسک Production و مسیر Rollback دستهبندی کنید و برای هر موضوع به مقاله مستقل آن بروید.
دسترسی سریع
- تعریف خانواده و معماری
- دستهبندی اعضا
- جدول مقایسه تصمیممحور
- شش مثال ترکیبی
- سناریوهای واقعی و Performance
- FAQ، مصاحبه و چکلیست
تعریف مجموعه و جایگاه آن در SQL Server
این خانواده شامل 13 عضو است که در چرخه مشاهده State، تحلیل Evidence، اجرای Change و کنترل نتیجه استفاده میشوند. تصمیم درست زمانی شکل میگیرد که عضو مناسب با Scope مناسب انتخاب شود؛ برای مثال ابزار تشخیصی نباید بهجای اقدام اصلاحی و Command پاکسازی نباید بهجای Root Cause Analysis استفاده شود.
محورهای مشترک خانواده عبارتاند از QUERY_STORE ON، query_text، plan، runtime_stats، capture policy، storage، QUERY_STORE OFF، disable capture. هر عضو فقط بخشی از این زنجیره را پوشش میدهد و ترکیب آنها باید بر اساس Runbook و Baseline انجام شود.
این تصویر جایگاه راهنمای جامع Query Store Configuration در SQL Server را میان اجزای مرتبط نشان میدهد و مشخص میکند QUERY_STORE ON چگونه به query_text و plan متصل میشود.
دستهبندی و معرفی اعضای خانواده
ALTER DATABASE ... SET QUERY_STORE = ON
فعالکردن Query Store برای ثبت Query Text، Plan و Runtime Statistics در سطح Database
ریسک یا محدودیت اصلی: قبل از فعالسازی باید Storage Limit، Capture Mode و Cleanup Policy تعریف شود تا Query Store به READ_ONLY نرود.
ALTER DATABASE ... SET QUERY_STORE = OFF
غیرفعالکردن جمعآوری Query Store در شرایط خاص نگهداری یا Rollback
ریسک یا محدودیت اصلی: خاموشکردن Query Store شکاف مانیتورینگ ایجاد میکند و ممکن است امکان تشخیص Regression را از بین ببرد.
OPERATION_MODE = READ_WRITE
قرار دادن Query Store در حالت ثبت و بهروزرسانی دادههای Runtime و Plan
ریسک یا محدودیت اصلی: اگر Storage پر باشد یا خطای داخلی رخ دهد، Actual State میتواند READ_ONLY بماند.
OPERATION_MODE = READ_ONLY
قرار دادن Query Store در حالت فقطخواندنی برای توقف ثبت داده جدید و حفظ داده موجود
ریسک یا محدودیت اصلی: در حالت READ_ONLY داده جدید ثبت نمیشود؛ برای تحلیل رویدادهای جاری باید علت این حالت روشن باشد.
QUERY_CAPTURE_MODE
کنترل سیاست Capture Queryها با حالتهای ALL، AUTO، NONE یا CUSTOM بر حسب نسخه
ریسک یا محدودیت اصلی: انتخاب ALL روی Workloadهای Ad hoc میتواند Storage و تعداد Queryها را سریع افزایش دهد.
SIZE_BASED_CLEANUP_MODE
مدیریت Cleanup خودکار Query Store هنگام نزدیکشدن به Max Storage Size
ریسک یا محدودیت اصلی: خاموشکردن Cleanup بدون مانیتورینگ Storage میتواند Query Store را به READ_ONLY ببرد.
STALE_QUERY_THRESHOLD_DAYS
تعیین مدت نگهداری Queryهای قدیمی پیش از Cleanup زمانمحور Query Store
ریسک یا محدودیت اصلی: مقدار بسیار کم History لازم برای Baseline و Regression Analysis را حذف میکند.
MAX_STORAGE_SIZE_MB
تعیین سقف Storage Query Store و پیشگیری از رشد کنترلنشده
ریسک یا محدودیت اصلی: سقف کوچک باعث READ_ONLY شدن زودهنگام و سقف بسیار بزرگ بدون Cleanup باعث مصرف Disk میشود.
INTERVAL_LENGTH_MINUTES
تعیین طول Runtime Statistics Interval برای Granularity تحلیل Query Store
ریسک یا محدودیت اصلی: Interval بسیار کوتاه داده بیشتری میسازد و Interval بسیار بلند Spikeهای کوتاه را پنهان میکند.
MAX_PLANS_PER_QUERY
محدودکردن تعداد Plan ذخیرهشده برای هر Query در Query Store
ریسک یا محدودیت اصلی: مقدار کم ممکن است Planهای مهم تاریخی را حذف کند و مقدار زیاد در Queryهای ناپایدار Storage را افزایش میدهد.
WAIT_STATS_CAPTURE_MODE
فعال یا غیرفعالکردن ثبت Wait Statistics در Query Store
ریسک یا محدودیت اصلی: ثبت Waitها ارزش تشخیصی بالایی دارد اما باید با Storage و Retention هماهنگ شود.
DATA_FLUSH_INTERVAL_SECONDS
تعیین فاصله Flush دادههای In-memory Query Store به Disk
ریسک یا محدودیت اصلی: Interval کوتاه I/O بیشتری ایجاد میکند و Interval بلند پنجره از دسترفتن داده در Crash را افزایش میدهد.
Query Store documentation
ساخت مسیر مطالعه و Runbook عملی برای Configuration، Monitoring و Troubleshooting Query Store
ریسک یا محدودیت اصلی: Documentation باید با نسخه واقعی SQL Server و Policy سازمان همگام باشد؛ متن عمومی جایگزین Runbook محیط نیست.
جدول مقایسه تصمیممحور
| موضوع یا Command | کاربرد اصلی | خروجی یا نکته مهم | مسیر آموزش |
|---|
| ALTER DATABASE ... SET QUERY_STORE = ON | فعالکردن Query Store برای ثبت Query Text، Plan و Runtime Statistics در سطح Database | QUERY_STORE ON | مقاله مستقل |
| ALTER DATABASE ... SET QUERY_STORE = OFF | غیرفعالکردن جمعآوری Query Store در شرایط خاص نگهداری یا Rollback | QUERY_STORE OFF | مقاله مستقل |
| OPERATION_MODE = READ_WRITE | قرار دادن Query Store در حالت ثبت و بهروزرسانی دادههای Runtime و Plan | OPERATION_MODE | مقاله مستقل |
| OPERATION_MODE = READ_ONLY | قرار دادن Query Store در حالت فقطخواندنی برای توقف ثبت داده جدید و حفظ داده موجود | READ_ONLY | مقاله مستقل |
| QUERY_CAPTURE_MODE | کنترل سیاست Capture Queryها با حالتهای ALL، AUTO، NONE یا CUSTOM بر حسب نسخه | QUERY_CAPTURE_MODE | مقاله مستقل |
| SIZE_BASED_CLEANUP_MODE | مدیریت Cleanup خودکار Query Store هنگام نزدیکشدن به Max Storage Size | SIZE_BASED_CLEANUP_MODE | مقاله مستقل |
| STALE_QUERY_THRESHOLD_DAYS | تعیین مدت نگهداری Queryهای قدیمی پیش از Cleanup زمانمحور Query Store | STALE_QUERY_THRESHOLD_DAYS | مقاله مستقل |
| MAX_STORAGE_SIZE_MB | تعیین سقف Storage Query Store و پیشگیری از رشد کنترلنشده | MAX_STORAGE_SIZE_MB | مقاله مستقل |
| INTERVAL_LENGTH_MINUTES | تعیین طول Runtime Statistics Interval برای Granularity تحلیل Query Store | INTERVAL_LENGTH_MINUTES | مقاله مستقل |
| MAX_PLANS_PER_QUERY | محدودکردن تعداد Plan ذخیرهشده برای هر Query در Query Store | MAX_PLANS_PER_QUERY | مقاله مستقل |
| WAIT_STATS_CAPTURE_MODE | فعال یا غیرفعالکردن ثبت Wait Statistics در Query Store | WAIT_STATS_CAPTURE_MODE | مقاله مستقل |
| DATA_FLUSH_INTERVAL_SECONDS | تعیین فاصله Flush دادههای In-memory Query Store به Disk | DATA_FLUSH_INTERVAL_SECONDS | مقاله مستقل |
| Query Store documentation | ساخت مسیر مطالعه و Runbook عملی برای Configuration، Monitoring و Troubleshooting Query Store | Query Store documentation | مقاله مستقل |
منطق انتخاب و گردشکار خانواده
گردشکار پیشنهادی با Capture State شروع میشود، سپس Evidence در بازه زمانی تحلیل، Change با Scope محدود اجرا و نتیجه با Metricهای Before/After کنترل میشود. اگر نتیجه نامطلوب بود، Rollback یا توقف مرحله بعد باید بدون تأخیر انجام شود.
در این خانواده، تفاوت میان Desired State و Actual State مهم است. وجود Configuration بهتنهایی موفقیت را ثابت نمیکند؛ Engine ممکن است بهدلیل Storage، Permission، Compile Pressure یا محدودیت نسخه به State دیگری برود.
این جریان، مسیر واقعی از ورودی و State اولیه تا نتیجه قابلمشاهده در راهنمای جامع Query Store Configuration در SQL Server را نمایش میدهد؛ نقاط کنترل QUERY_STORE ON، query_text و runtime_stats در آن برجسته شدهاند.
مثالهای ترکیبی خانواده
مثال ترکیبی 1: فعالسازی Query Store
این مثال ترکیبی نشان میدهد اعضای خانواده چگونه برای سناریوی فعالسازی Query Store کنار هم قرار میگیرند.
ALTER DATABASE CURRENT SET QUERY_STORE = ON;
| خروجی | تفسیر |
|---|
| مرحله | فعالسازی Query Store |
| خروجی | ALTER DATABASE ... SET QUERY_STORE = ON |
نکته فنی: خروجی را در Repository زماندار ذخیره و با SLA و Baseline مقایسه کنید.
مثال ترکیبی 2: بررسی State
این مثال ترکیبی نشان میدهد اعضای خانواده چگونه برای سناریوی بررسی State کنار هم قرار میگیرند.
SELECT * FROM sys.database_query_store_options;
| خروجی | تفسیر |
|---|
| مرحله | بررسی State |
| خروجی | ALTER DATABASE ... SET QUERY_STORE = OFF |
نکته فنی: خروجی را در Repository زماندار ذخیره و با SLA و Baseline مقایسه کنید.
مثال ترکیبی 3: تنظیم Capture Mode
این مثال ترکیبی نشان میدهد اعضای خانواده چگونه برای سناریوی تنظیم Capture Mode کنار هم قرار میگیرند.
ALTER DATABASE CURRENT SET QUERY_STORE (QUERY_CAPTURE_MODE = AUTO);
| خروجی | تفسیر |
|---|
| مرحله | تنظیم Capture Mode |
| خروجی | OPERATION_MODE = READ_WRITE |
نکته فنی: خروجی را در Repository زماندار ذخیره و با SLA و Baseline مقایسه کنید.
مثال ترکیبی 4: تنظیم Storage
این مثال ترکیبی نشان میدهد اعضای خانواده چگونه برای سناریوی تنظیم Storage کنار هم قرار میگیرند.
ALTER DATABASE CURRENT SET QUERY_STORE (MAX_STORAGE_SIZE_MB = 2048);
| خروجی | تفسیر |
|---|
| مرحله | تنظیم Storage |
| خروجی | OPERATION_MODE = READ_ONLY |
نکته فنی: خروجی را در Repository زماندار ذخیره و با SLA و Baseline مقایسه کنید.
مثال ترکیبی 5: تنظیم Retention
این مثال ترکیبی نشان میدهد اعضای خانواده چگونه برای سناریوی تنظیم Retention کنار هم قرار میگیرند.
ALTER DATABASE CURRENT SET QUERY_STORE (CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 30));
| خروجی | تفسیر |
|---|
| مرحله | تنظیم Retention |
| خروجی | QUERY_CAPTURE_MODE |
نکته فنی: خروجی را در Repository زماندار ذخیره و با SLA و Baseline مقایسه کنید.
مثال ترکیبی 6: گزارش حجم و Queryها
این مثال ترکیبی نشان میدهد اعضای خانواده چگونه برای سناریوی گزارش حجم و Queryها کنار هم قرار میگیرند.
SELECT current_storage_size_mb, max_storage_size_mb, actual_state_desc, readonly_reason FROM sys.database_query_store_options;
SELECT COUNT_BIG(*) AS query_count FROM sys.query_store_query;
| خروجی | تفسیر |
|---|
| مرحله | گزارش حجم و Queryها |
| خروجی | SIZE_BASED_CLEANUP_MODE |
نکته فنی: خروجی را در Repository زماندار ذخیره و با SLA و Baseline مقایسه کنید.
سناریوهای واقعی در محیط سازمانی
در Incident Performance، تیم ابتدا باید زمان شروع، Databaseهای درگیر، Queryهای غالب و تغییرات اخیر را مشخص کند. سپس عضو مناسب این خانواده برای مشاهده State انتخاب میشود. اجرای Command تغییردهنده پیش از ثبت Evidence، امکان Root Cause Analysis را کاهش میدهد.
برای Capacity Planning، Snapshotهای زماندار از Counterها، Query Store و Cache جمعآوری میشود. Trendهای هفتگی و ماهانه باید کنار Release Calendar و Peak Load قرار بگیرند تا رشد طبیعی از Regression جدا شود.
در Change Window، Owner فنی باید معیار موفقیت، Threshold توقف، زمان مشاهده و دستور Rollback را بنویسد. این ساختار خطای انسانی را کم میکند و انتقال دانش میان شیفتها را سادهتر میسازد.
هشدار مهم خانواده
بعضی اعضای Query Store Configuration فقط تشخیصیاند و بعضی State یا Cache را تغییر میدهند. اجرای مورد تغییردهنده روی Production بدون Baseline، Approval و Monitoring میتواند CPU، I/O یا Latency را افزایش دهد.
اشتباهات رایج
- یکساندانستن Scope همه اعضای خانواده؛ بعضی Database-level و بعضی Instance-level هستند.
- اجرای Command پاکسازی برای هر مشکل Performance بدون اثبات Plan یا Cache Root Cause.
- نادیدهگرفتن Restart، Eviction، Cleanup و Reset Condition در تحلیل Counterها.
- گرفتن Snapshot بدون Timestamp، Login، Version و Database Context.
- تکرار Change موفق قبلی روی Workload جدید بدون بازآزمایی.
Performance Considerations
مانیتورینگ پرتکرار با خروجی بزرگ میتواند خود Overhead بسازد. Queryهای Collector باید ستونهای ضروری، Filter روشن و Interval متناسب داشته باشند. Changeهای Cache یا Configuration نیز باید Compile، Memory، I/O و Latency را همزمان پایش کنند.
برای Repository داخلی، Partitioning یا Retention مناسب، Index روی زمان Capture و شناسههای Query یا Plan و Compression میتواند هزینه نگهداری History را کنترل کند. Retention بسیار کوتاه Baseline را از بین میبرد و Retention بسیار بلند بدون Capacity Plan Storage را افزایش میدهد.
Best Practices خانواده
- هر عضو را بر اساس TopicType و Scope مستند کنید.
- Diagnostic Query را از Change Command جدا نگه دارید.
- Baseline و معیار موفقیت را پیش از اجرا ثبت کنید.
- برای Production از Canary، Change Window و Threshold توقف استفاده کنید.
- دادههای تاریخی را با Reset Condition و Version تفسیر کنید.
- پس از Incident، Runbook را با Evidence واقعی بهروزرسانی کنید.
این پنل تصمیم نشان میدهد در سناریوی راهنمای جامع Query Store Configuration در SQL Server چه زمانی مسیر پیشنهادی انتخاب شود، کجا Overhead یا ریسک افزایش مییابد و چگونه QUERY_STORE ON با capture policy سنجیده شود.
سؤالات متداول
راهنمای جامع Query Store Configuration در SQL Server دقیقاً چه مسئلهای را حل میکند؟
مسئله اصلی، شناخت، مقایسه و انتخاب درست 13 موضوع مرتبط با Query Store Configuration است. ارزش واقعی زمانی ایجاد میشود که خروجی با Baseline و Context درست تفسیر شود.
برای شروع کار با راهنمای جامع Query Store Configuration در SQL Server چه پیشنیازی لازم است؟
دسترسی مناسب، شناخت Scope، ثبت State اولیه و آشنایی با QUERY_STORE ON و query_text ضروری است.
آیا استفاده از راهنمای جامع Query Store Configuration در SQL Server هزینه زیرساخت را کاهش میدهد؟
در صورت استفاده هدفمند، میتواند هزینه ناشی از CPU، I/O، Incident و زمان عیبیابی را کاهش دهد؛ نتیجه باید با Metric مالی و فنی سنجیده شود.
این موضوع برای پروژههای سازمانی چه ارزشی دارد؟
در پروژه سازمانی، استانداردسازی QUERY_STORE ON و plan باعث Audit بهتر، تصمیم سریعتر و کاهش ریسک Change میشود.
راهنمای جامع Query Store Configuration در SQL Server با روشهای جایگزین چه تفاوتی دارد؟
تفاوت اصلی در Scope، میزان جزئیات، اثر عملیاتی و قابلیت بازگشت است؛ انتخاب باید بر اساس سناریو باشد نه محبوبیت ابزار.
برای پیادهسازی حرفهای راهنمای جامع Query Store Configuration در SQL Server میتوان از خدمات تخصصی استفاده کرد؟
بله، آموزش، مشاوره، طراحی Runbook و اجرای پروژه SQL Server میتواند متناسب با Workload و محدودیت سازمان انجام شود.
رایجترین خطا در استفاده از راهنمای جامع Query Store Configuration در SQL Server چیست؟
رایجترین خطا، اقدام بدون Baseline و تفسیر جداگانه QUERY_STORE ON بدون توجه به runtime_stats است.
راهنمای جامع Query Store Configuration در SQL Server چه اثری بر Performance دارد؟
اثر به نرخ اجرا، Scope و Workload وابسته است. CPU، Logical Reads، Compile، Blocking و Latency باید همزمان بررسی شوند.
Best Practice اصلی برای راهنمای جامع Query Store Configuration در SQL Server چیست؟
با Scope کوچک شروع کنید، State را ثبت کنید، معیار موفقیت تعریف کنید و پس از تغییر، query_text و capture policy را دوباره اندازه بگیرید.
آیا راهنمای جامع Query Store Configuration در SQL Server در همه نسخههای SQL Server یکسان است؟
خیر. Availability گزینهها، Permissionها، ستونها و رفتار ممکن است با Version، Edition و Compatibility Level تفاوت داشته باشد؛ محیط هدف را مستقیماً بررسی کنید.
سؤالات مصاحبه
- چگونه Scope و Reset Condition مربوط به راهنمای جامع Query Store Configuration در SQL Server را توضیح میدهید؟
- برای اندازهگیری اثر راهنمای جامع Query Store Configuration در SQL Server چه Baseline و Metricهایی انتخاب میکنید؟
- تفاوت Diagnostic Action و Change Action در این موضوع چیست؟
- اگر QUERY_STORE ON بهتر ولی query_text بدتر شود، تصمیم شما چیست؟
- چه Rollback Plan و Audit Trail برای استفاده از راهنمای جامع Query Store Configuration در SQL Server تعریف میکنید؟
چکلیست نهایی خانواده
- تعداد 13 عضو خانواده و Scope هرکدام را تأیید کنید.
- Permission و Version محیط هدف را بررسی کنید.
- Collector Query و Change Command را در Runbook جدا کنید.
- Baseline CPU، I/O، Latency، Compile و Blocking را ذخیره کنید.
- Change را مرحلهای اجرا و State واقعی را دوباره بخوانید.
- مقصد هر مقاله مستقل را برای مطالعه جزئیات مشخص کنید.
- نتیجه و Rollback را در Ticket ثبت کنید.
جمعبندی
راهنمای جامع Query Store Configuration در SQL Server زمانی بیشترین ارزش را دارد که اعضای آن بهعنوان یک Workflow دیده شوند، نه مجموعهای از Commandهای جدا. انتخاب عضو مناسب، ثبت Evidence و کنترل اثر، سه ستون اصلی تصمیم درست هستند.
برای ادامه، مقاله مستقل هر عضو را از بخش معرفی مطالعه کنید و فقط Query یا Command متناسب با Scope و ریسک محیط خود را وارد Runbook کنید.
خدمات برنامهنویسی و پایگاه داده
برنامهنویسی در اصفهان؛ قبول سفارشهای برنامهنویسی و پایگاه داده با شماره 09131253620.
انجام پروژه، آموزش برنامهنویسی و آموزش SQL Server توسط مجموعهای معتبر با سابقه فعالیت حرفهای از سال ۱۳۷۵ شمسی تاکنون.
برای سفارش پروژههای برنامهنویسی، پایگاه داده، سیستمهای تحت وب و راهکارهای نرمافزاری با 09131253620 تماس بگیرید؛ ایتا، واتساپ و تماس مستقیم در دسترس است.
تماس با ما