راهنمای جامع Query Store Configuration در SQL Server | آموزش تخصصی SQL Server

راهنمای جامع Query Store Configuration در SQL Server

توسط admin | گروه SQL Server | 1405/05/09

نظرات 0

راهنمای جامع 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 دسته‌بندی کنید و برای هر موضوع به مقاله مستقل آن بروید.

دسترسی سریع

  1. تعریف خانواده و معماری
  2. دسته‌بندی اعضا
  3. جدول مقایسه تصمیم‌محور
  4. شش مثال ترکیبی
  5. سناریوهای واقعی و Performance
  6. 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 Configuration در SQL Server با برچسب‌های QUERY_STORE ON, query_text, plan, runtime_stats, capture policyنقشه مفهومی و جایگاهراهنمای جامع Query Store Configuration در SQL ServerQUERY_STORE ONquery_textplanruntime_statscapture policy

این تصویر جایگاه راهنمای جامع 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 در سطح DatabaseQUERY_STORE ONمقاله مستقل
ALTER DATABASE ... SET QUERY_STORE = OFFغیرفعال‌کردن جمع‌آوری Query Store در شرایط خاص نگهداری یا RollbackQUERY_STORE OFFمقاله مستقل
OPERATION_MODE = READ_WRITEقرار دادن Query Store در حالت ثبت و به‌روزرسانی داده‌های Runtime و PlanOPERATION_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 SizeSIZE_BASED_CLEANUP_MODEمقاله مستقل
STALE_QUERY_THRESHOLD_DAYSتعیین مدت نگهداری Queryهای قدیمی پیش از Cleanup زمان‌محور Query StoreSTALE_QUERY_THRESHOLD_DAYSمقاله مستقل
MAX_STORAGE_SIZE_MBتعیین سقف Storage Query Store و پیشگیری از رشد کنترل‌نشدهMAX_STORAGE_SIZE_MBمقاله مستقل
INTERVAL_LENGTH_MINUTESتعیین طول Runtime Statistics Interval برای Granularity تحلیل Query StoreINTERVAL_LENGTH_MINUTESمقاله مستقل
MAX_PLANS_PER_QUERYمحدودکردن تعداد Plan ذخیره‌شده برای هر Query در Query StoreMAX_PLANS_PER_QUERYمقاله مستقل
WAIT_STATS_CAPTURE_MODEفعال یا غیرفعال‌کردن ثبت Wait Statistics در Query StoreWAIT_STATS_CAPTURE_MODEمقاله مستقل
DATA_FLUSH_INTERVAL_SECONDSتعیین فاصله Flush داده‌های In-memory Query Store به DiskDATA_FLUSH_INTERVAL_SECONDSمقاله مستقل
Query Store documentationساخت مسیر مطالعه و Runbook عملی برای Configuration، Monitoring و Troubleshooting Query StoreQuery Store documentationمقاله مستقل

منطق انتخاب و گردش‌کار خانواده

گردش‌کار پیشنهادی با Capture State شروع می‌شود، سپس Evidence در بازه زمانی تحلیل، Change با Scope محدود اجرا و نتیجه با Metricهای Before/After کنترل می‌شود. اگر نتیجه نامطلوب بود، Rollback یا توقف مرحله بعد باید بدون تأخیر انجام شود.

در این خانواده، تفاوت میان Desired State و Actual State مهم است. وجود Configuration به‌تنهایی موفقیت را ثابت نمی‌کند؛ Engine ممکن است به‌دلیل Storage، Permission، Compile Pressure یا محدودیت نسخه به State دیگری برود.

جریان اجرا و داده: راهنمای جامع Query Store Configuration در SQL Serverنمای فنی اختصاصی راهنمای جامع Query Store Configuration در SQL Server با برچسب‌های QUERY_STORE ON, query_text, plan, runtime_stats, capture policyجریان اجرا و دادهراهنمای جامع Query Store Configuration در SQL ServerQUERY_STORE ONquery_textplanDecisionruntime_statscapture policystorage

این جریان، مسیر واقعی از ورودی و 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 را افزایش دهد.

اشتباهات رایج

  1. یکسان‌دانستن Scope همه اعضای خانواده؛ بعضی Database-level و بعضی Instance-level هستند.
  2. اجرای Command پاک‌سازی برای هر مشکل Performance بدون اثبات Plan یا Cache Root Cause.
  3. نادیده‌گرفتن Restart، Eviction، Cleanup و Reset Condition در تحلیل Counterها.
  4. گرفتن Snapshot بدون Timestamp، Login، Version و Database Context.
  5. تکرار 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 خانواده

  1. هر عضو را بر اساس TopicType و Scope مستند کنید.
  2. Diagnostic Query را از Change Command جدا نگه دارید.
  3. Baseline و معیار موفقیت را پیش از اجرا ثبت کنید.
  4. برای Production از Canary، Change Window و Threshold توقف استفاده کنید.
  5. داده‌های تاریخی را با Reset Condition و Version تفسیر کنید.
  6. پس از Incident، Runbook را با Evidence واقعی به‌روزرسانی کنید.
تصمیم Performance و Best Practices: راهنمای جامع Query Store Configuration در SQL Serverنمای فنی اختصاصی راهنمای جامع Query Store Configuration در SQL Server با برچسب‌های QUERY_STORE ON, query_text, plan, runtime_stats, capture policyتصمیم Performance و Best Practicesراهنمای جامع Query Store Configuration در SQL ServerQUERY_STORE ONquery_textplanruntime_statscapture policyM1M2M3M4

این پنل تصمیم نشان می‌دهد در سناریوی راهنمای جامع 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 تفاوت داشته باشد؛ محیط هدف را مستقیماً بررسی کنید.

سؤالات مصاحبه

  1. چگونه Scope و Reset Condition مربوط به راهنمای جامع Query Store Configuration در SQL Server را توضیح می‌دهید؟
  2. برای اندازه‌گیری اثر راهنمای جامع Query Store Configuration در SQL Server چه Baseline و Metricهایی انتخاب می‌کنید؟
  3. تفاوت Diagnostic Action و Change Action در این موضوع چیست؟
  4. اگر QUERY_STORE ON بهتر ولی query_text بدتر شود، تصمیم شما چیست؟
  5. چه Rollback Plan و Audit Trail برای استفاده از راهنمای جامع Query Store Configuration در SQL Server تعریف می‌کنید؟

چک‌لیست نهایی خانواده

  1. تعداد 13 عضو خانواده و Scope هرکدام را تأیید کنید.
  2. Permission و Version محیط هدف را بررسی کنید.
  3. Collector Query و Change Command را در Runbook جدا کنید.
  4. Baseline CPU، I/O، Latency، Compile و Blocking را ذخیره کنید.
  5. Change را مرحله‌ای اجرا و State واقعی را دوباره بخوانید.
  6. مقصد هر مقاله مستقل را برای مطالعه جزئیات مشخص کنید.
  7. نتیجه و Rollback را در Ticket ثبت کنید.

جمع‌بندی

راهنمای جامع Query Store Configuration در SQL Server زمانی بیشترین ارزش را دارد که اعضای آن به‌عنوان یک Workflow دیده شوند، نه مجموعه‌ای از Commandهای جدا. انتخاب عضو مناسب، ثبت Evidence و کنترل اثر، سه ستون اصلی تصمیم درست هستند.

برای ادامه، مقاله مستقل هر عضو را از بخش معرفی مطالعه کنید و فقط Query یا Command متناسب با Scope و ریسک محیط خود را وارد Runbook کنید.

خدمات برنامه‌نویسی و پایگاه داده

برنامه‌نویسی در اصفهان؛ قبول سفارش‌های برنامه‌نویسی و پایگاه داده با شماره 09131253620.

انجام پروژه، آموزش برنامه‌نویسی و آموزش SQL Server توسط مجموعه‌ای معتبر با سابقه فعالیت حرفه‌ای از سال ۱۳۷۵ شمسی تاکنون.

برای سفارش پروژه‌های برنامه‌نویسی، پایگاه داده، سیستم‌های تحت وب و راهکارهای نرم‌افزاری با 09131253620 تماس بگیرید؛ ایتا، واتساپ و تماس مستقیم در دسترس است.

تماس با ما

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر