راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server | آموزش تخصصی SQL Server

راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server

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

نظرات 0

راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server

دامنه راهنما و نتیجه‌ای که باید به دست آید

خانواده «Statistics Commands» مجموعه‌ای از 20 موضوع مرتبط است که برای مدیریت چرخه عمر Statistics از ایجاد و Update تا نمونه‌برداری، تنظیمات دیتابیس، پایش Properties و نگهداری پارتیشن‌ها. استفاده می‌شود. مسئله اصلی این نیست که همه DMVها یا فرمان‌ها اجرا شوند؛ هدف، انتخاب ابزار درست برای هر مرحله از مشاهده، تشخیص، اعتبارسنجی و اقدام است.

مخاطب این راهنما DBA، توسعه‌دهنده Backend و مسئول نگهداری است که با Queryهای T-SQL و ساختار Metadata آشناست. در پایان، خواننده می‌تواند اعضای خانواده را بر اساس نقش تفکیک کند، خروجی آن‌ها را در یک Timeline مشترک قرار دهد و از تصمیم عجولانه بر پایه یک شاخص جلوگیری نماید. برای موضوع Statistics Commands در مجموعه 16، همین قاعده باید با داده همان Scope تطبیق داده شود.

این مقاله دید مجموعه‌محور دارد و وارد همه جزئیات اجرایی هر عضو نمی‌شود؛ برای هر موضوع یک لینک مستقل با مثال‌ها و کنترل‌های Production در نظر گرفته شده است. ترتیب خانواده 16 در تخصیص شناسه و لینک‌ها نیز بدون آمیختن با مجموعه دیگر حفظ شده است.

نقشه دسترسی سریع

  1. ابتدا نقش هر عضو و مرز داده آن را بشناسید.
  2. جدول مقایسه را برای انتخاب ابزار متناسب با سؤال بخوانید.
  3. مثال‌های ترکیبی را به‌عنوان الگوی Runbook آزمایش کنید.
  4. پیش از اقدام، خطاهای تفسیر و کنترل Performance را مرور نمایید.

تعریف مجموعه و مدل تصمیم‌گیری

این مجموعه در خانواده بصری «Performance / Tuning / Optimization» قرار می‌گیرد، زیرا اعضای آن داده یا فرمانی برای تحلیل Performance تولید می‌کنند. مدل پیشنهادی چهار گام دارد: Scope را محدود کنید، Snapshot بگیرید، سیگنال را با منبع دوم هم‌بسته سازید و فقط سپس اقدام قابل بازگشت تعریف نمایید. در Runbook خانواده 16، تفسیر این بند به شواهد اختصاصی Statistics Commands وابسته است.

در خانواده 16، هر عضو باید نقش متفاوتی داشته باشد. یکی Baseline می‌سازد، دیگری جزئیات ساختاری یا عملیاتی می‌دهد و عضو بعدی نتیجه را به تصمیم نگهداری نزدیک می‌کند. اگر دو ابزار پاسخ یکسان می‌دهند، Query اضافی حذف و ابزار کم‌هزینه‌تر انتخاب می‌شود.

راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server — نقشه جایگاه و اجزای اصلی — Taxonomy Gridنمای فنی اختصاصی Statistics Commands که مفاهیم CREATE_STATISTICS, UPDATE_STATISTICS, DROP_STATISTICS, SP_UPDATESTATS, DBCC_SHOW_STATISTICS را در قالب Taxonomy Grid برای بخش نقشه جایگاه و اجزای اصلی مرتبط می‌کند.Statistics Commandsنقشه جایگاه و اجزای اصلی | Taxonomy GridCREATE_STATISTICSUPDATE_STATISTICSDROP_STATISTICSSP_UPDATESTATSDBCC_SHOW_STATISTICSDecision / Metric PanelM1M2M3M4Master View

این تصویر، جایگاه Statistics Commands را با تمرکز بر CREATE_STATISTICS، UPDATE_STATISTICS و DROP_STATISTICS نشان می‌دهد؛ پنل عددی پایین شکل برای جداکردن مشاهده خام از تصمیم اجرایی طراحی شده است.

دسته‌بندی اعضا و مسیر مطالعه

1. CREATE STATISTICS

CREATE STATISTICS در این خانواده مسئول این بخش از تحلیل است: آمار ستونی یا چندستونی مستقل از ایندکس ایجاد می‌کند تا Cardinality Estimator توزیع داده را دقیق‌تر تخمین بزند. نقش آن با موضوع «statistics_name» آغاز می‌شود و برای رسیدن به تصمیم باید با WHERE filter_predicate یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل CREATE STATISTICS با مثال‌های اختصاصی و چک‌لیست اجرا

2. UPDATE STATISTICS

UPDATE STATISTICS در این خانواده مسئول این بخش از تحلیل است: Histogram و Density آمار موجود را با نمونه‌برداری جدید بازسازی می‌کند تا تخمین ردیف‌ها با تغییرات داده هماهنگ شود. نقش آن با موضوع «statistics_target» آغاز می‌شود و برای رسیدن به تصمیم باید با SAMPLE یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل UPDATE STATISTICS با مثال‌های اختصاصی و چک‌لیست اجرا

3. DROP STATISTICS

DROP STATISTICS در این خانواده مسئول این بخش از تحلیل است: یک یا چند Statistics مستقل را حذف می‌کند؛ آمار متصل به ایندکس با DROP STATISTICS قابل حذف مستقیم نیست. نقش آن با موضوع «statistics_name» آغاز می‌شود و برای رسیدن به تصمیم باید با auto_created یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل DROP STATISTICS با مثال‌های اختصاصی و چک‌لیست اجرا

4. sp_updatestats

sp_updatestats در این خانواده مسئول این بخش از تحلیل است: در پایگاه داده جاری روی جدول‌های کاربر پیمایش می‌کند و آمار واجد شرایط را با UPDATE STATISTICS تازه می‌سازد. نقش آن با موضوع «database_scope» آغاز می‌شود و برای رسیدن به تصمیم باید با resample یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل sp_updatestats با مثال‌های اختصاصی و چک‌لیست اجرا

5. DBCC SHOW_STATISTICS

DBCC SHOW_STATISTICS در این خانواده مسئول این بخش از تحلیل است: جزئیات Statistics شامل زمان Update، تعداد Rows، Sample، Density Vector و گام‌های Histogram را نمایش می‌دهد. نقش آن با موضوع «STAT_HEADER» آغاز می‌شود و برای رسیدن به تصمیم باید با HISTOGRAM یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل DBCC SHOW_STATISTICS با مثال‌های اختصاصی و چک‌لیست اجرا

6. STATS_DATE

STATS_DATE در این خانواده مسئول این بخش از تحلیل است: تاریخ و زمان آخرین تولید Blob آماری برای object_id و stats_id را برمی‌گرداند. نقش آن با موضوع «object_id» آغاز می‌شود و برای رسیدن به تصمیم باید با last_updated یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل STATS_DATE با مثال‌های اختصاصی و چک‌لیست اجرا

7. Statistics Options:FULLSCAN

Statistics Options:FULLSCAN در این خانواده مسئول این بخش از تحلیل است: تمام ردیف‌های جدول یا پارتیشن هدف را برای ساخت Statistics می‌خواند و خطای Sample را حذف می‌کند. نقش آن با موضوع «FULLSCAN» آغاز می‌شود و برای رسیدن به تصمیم باید با histogram_quality یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Statistics Options:FULLSCAN با مثال‌های اختصاصی و چک‌لیست اجرا

8. Statistics Options:SAMPLE

Statistics Options:SAMPLE در این خانواده مسئول این بخش از تحلیل است: درصد یا تعداد ردیف نمونه را هنگام ساخت یا Update آمار تعیین می‌کند تا تعادل میان هزینه و دقت برقرار شود. نقش آن با موضوع «SAMPLE PERCENT» آغاز می‌شود و برای رسیدن به تصمیم باید با sampling_rate یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Statistics Options:SAMPLE با مثال‌های اختصاصی و چک‌لیست اجرا

9. Statistics Options:RESAMPLE

Statistics Options:RESAMPLE در این خانواده مسئول این بخش از تحلیل است: Statistics را با نرخ نمونه ذخیره‌شده قبلی بازسازی می‌کند و برای حفظ سیاست Sample موجود مفید است. نقش آن با موضوع «RESAMPLE» آغاز می‌شود و برای رسیدن به تصمیم باید با previous_rate یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Statistics Options:RESAMPLE با مثال‌های اختصاصی و چک‌لیست اجرا

10. Statistics Options:NORECOMPUTE

Statistics Options:NORECOMPUTE در این خانواده مسئول این بخش از تحلیل است: به SQL Server می‌گوید Statistics مشخص را به‌طور خودکار Recompute نکند و مسئولیت تازگی را به برنامه نگهداری بسپارد. نقش آن با موضوع «NORECOMPUTE» آغاز می‌شود و برای رسیدن به تصمیم باید با no_recompute یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Statistics Options:NORECOMPUTE با مثال‌های اختصاصی و چک‌لیست اجرا

11. Statistics Options:INCREMENTAL = ON

Statistics Options:INCREMENTAL = ON در این خانواده مسئول این بخش از تحلیل است: Statistics را به اجزای پارتیشنی تقسیم می‌کند تا Update یک پارتیشن بدون اسکن کامل همه پارتیشن‌ها ممکن شود. نقش آن با موضوع «INCREMENTAL» آغاز می‌شود و برای رسیدن به تصمیم باید با partition statistics یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Statistics Options:INCREMENTAL = ON با مثال‌های اختصاصی و چک‌لیست اجرا

12. Statistics Options:PERSIST_SAMPLE_PERCENT = ON

Statistics Options:PERSIST_SAMPLE_PERCENT = ON در این خانواده مسئول این بخش از تحلیل است: نرخ Sample انتخاب‌شده را در Metadata Statistics نگه می‌دارد تا Updateهای بعدی بتوانند همان درصد را حفظ کنند. نقش آن با موضوع «PERSIST_SAMPLE_PERCENT» آغاز می‌شود و برای رسیدن به تصمیم باید با SAMPLE یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Statistics Options:PERSIST_SAMPLE_PERCENT = ON با مثال‌های اختصاصی و چک‌لیست اجرا

13. Statistics Options:AUTO_DROP = ON

Statistics Options:AUTO_DROP = ON در این خانواده مسئول این بخش از تحلیل است: به Statistics دستی اجازه می‌دهد هنگام تغییر Schema مزاحم، مشابه Auto Statistics مدیریت و در صورت نیاز حذف شود. نقش آن با موضوع «AUTO_DROP» آغاز می‌شود و برای رسیدن به تصمیم باید با user_created statistics یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Statistics Options:AUTO_DROP = ON با مثال‌های اختصاصی و چک‌لیست اجرا

14. Statistics Options:MAXDOP

Statistics Options:MAXDOP در این خانواده مسئول این بخش از تحلیل است: حداکثر درجه موازی‌سازی عملیات ساخت یا به‌روزرسانی Statistics را برای همان دستور کنترل می‌کند. نقش آن با موضوع «MAXDOP» آغاز می‌شود و برای رسیدن به تصمیم باید با CPU budget یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Statistics Options:MAXDOP با مثال‌های اختصاصی و چک‌لیست اجرا

15. Database Options:AUTO_CREATE_STATISTICS

Database Options:AUTO_CREATE_STATISTICS در این خانواده مسئول این بخش از تحلیل است: به Optimizer اجازه می‌دهد هنگام نیاز Query، Statistics تک‌ستونی خودکار روی ستون Predicate یا Join بسازد. نقش آن با موضوع «AUTO_CREATE_STATISTICS» آغاز می‌شود و برای رسیدن به تصمیم باید با single-column statistics یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Database Options:AUTO_CREATE_STATISTICS با مثال‌های اختصاصی و چک‌لیست اجرا

16. Database Options:AUTO_UPDATE_STATISTICS

Database Options:AUTO_UPDATE_STATISTICS در این خانواده مسئول این بخش از تحلیل است: هنگام عبور تغییرات داده از Threshold داخلی، Statistics موردنیاز Query را به‌صورت خودکار Update می‌کند. نقش آن با موضوع «AUTO_UPDATE_STATISTICS» آغاز می‌شود و برای رسیدن به تصمیم باید با synchronous update یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Database Options:AUTO_UPDATE_STATISTICS با مثال‌های اختصاصی و چک‌لیست اجرا

17. Database Options:AUTO_UPDATE_STATISTICS_ASYNC

Database Options:AUTO_UPDATE_STATISTICS_ASYNC در این خانواده مسئول این بخش از تحلیل است: Query محرک را با Statistics موجود Compile می‌کند و Update خودکار آمار را در پس‌زمینه قرار می‌دهد. نقش آن با موضوع «AUTO_UPDATE_STATISTICS_ASYNC» آغاز می‌شود و برای رسیدن به تصمیم باید با compile latency یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Database Options:AUTO_UPDATE_STATISTICS_ASYNC با مثال‌های اختصاصی و چک‌لیست اجرا

18. Database Options:AUTO_CREATE_STATISTICS INCREMENTAL

Database Options:AUTO_CREATE_STATISTICS INCREMENTAL در این خانواده مسئول این بخش از تحلیل است: به دیتابیس اجازه می‌دهد Auto Statistics روی جداول پارتیشن‌بندی‌شده را در صورت پشتیبانی به‌شکل Incremental بسازد. نقش آن با موضوع «AUTO_CREATE_STATISTICS» آغاز می‌شود و برای رسیدن به تصمیم باید با partitioned table یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Database Options:AUTO_CREATE_STATISTICS INCREMENTAL با مثال‌های اختصاصی و چک‌لیست اجرا

19. Statistics DMFs:sys.dm_db_stats_properties

Statistics DMFs:sys.dm_db_stats_properties در این خانواده مسئول این بخش از تحلیل است: ویژگی‌های عملی Statistics شامل last_updated، rows، rows_sampled، steps، unfiltered_rows و modification_counter را بازمی‌گرداند. نقش آن با موضوع «last_updated» آغاز می‌شود و برای رسیدن به تصمیم باید با rows_sampled یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Statistics DMFs:sys.dm_db_stats_properties با مثال‌های اختصاصی و چک‌لیست اجرا

20. Statistics DMFs:sys.dm_db_incremental_stats_properties

Statistics DMFs:sys.dm_db_incremental_stats_properties در این خانواده مسئول این بخش از تحلیل است: ویژگی Statistics Incremental را به تفکیک partition_number شامل last_updated، rows، rows_sampled و modification_counter برمی‌گرداند. نقش آن با موضوع «partition_number» آغاز می‌شود و برای رسیدن به تصمیم باید با rows یا یک منبع مستقل اعتبارسنجی گردد.

آموزش کامل Statistics DMFs:sys.dm_db_incremental_stats_properties با مثال‌های اختصاصی و چک‌لیست اجرا

جدول مقایسه تصمیم‌محور اعضای مجموعه

موضوع یا تابعکاربرد اصلیخروجی یا نکته کلیدیلینک آموزش کامل
CREATE STATISTICSآمار ستونی یا چندستونی مستقل از ایندکس ایجاد می‌کند تا Cardinality Estimator توزیع داده را دقیق‌تر تخمین بزند.statistics_name / column_listمشاهده آموزش کامل
UPDATE STATISTICSHistogram و Density آمار موجود را با نمونه‌برداری جدید بازسازی می‌کند تا تخمین ردیف‌ها با تغییرات داده هماهنگ شود.statistics_target / FULLSCANمشاهده آموزش کامل
DROP STATISTICSیک یا چند Statistics مستقل را حذف می‌کند؛ آمار متصل به ایندکس با DROP STATISTICS قابل حذف مستقیم نیست.statistics_name / user_createdمشاهده آموزش کامل
sp_updatestatsدر پایگاه داده جاری روی جدول‌های کاربر پیمایش می‌کند و آمار واجد شرایط را با UPDATE STATISTICS تازه می‌سازد.database_scope / modification_counterمشاهده آموزش کامل
DBCC SHOW_STATISTICSجزئیات Statistics شامل زمان Update، تعداد Rows، Sample، Density Vector و گام‌های Histogram را نمایش می‌دهد.STAT_HEADER / DENSITY_VECTORمشاهده آموزش کامل
STATS_DATEتاریخ و زمان آخرین تولید Blob آماری برای object_id و stats_id را برمی‌گرداند.object_id / stats_idمشاهده آموزش کامل
Statistics Options:FULLSCANتمام ردیف‌های جدول یا پارتیشن هدف را برای ساخت Statistics می‌خواند و خطای Sample را حذف می‌کند.FULLSCAN / sample_percent=100مشاهده آموزش کامل
Statistics Options:SAMPLEدرصد یا تعداد ردیف نمونه را هنگام ساخت یا Update آمار تعیین می‌کند تا تعادل میان هزینه و دقت برقرار شود.SAMPLE PERCENT / SAMPLE ROWSمشاهده آموزش کامل
Statistics Options:RESAMPLEStatistics را با نرخ نمونه ذخیره‌شده قبلی بازسازی می‌کند و برای حفظ سیاست Sample موجود مفید است.RESAMPLE / persisted_sampleمشاهده آموزش کامل
Statistics Options:NORECOMPUTEبه SQL Server می‌گوید Statistics مشخص را به‌طور خودکار Recompute نکند و مسئولیت تازگی را به برنامه نگهداری بسپارد.NORECOMPUTE / auto updateمشاهده آموزش کامل
Statistics Options:INCREMENTAL = ONStatistics را به اجزای پارتیشنی تقسیم می‌کند تا Update یک پارتیشن بدون اسکن کامل همه پارتیشن‌ها ممکن شود.INCREMENTAL / partitioned tableمشاهده آموزش کامل
Statistics Options:PERSIST_SAMPLE_PERCENT = ONنرخ Sample انتخاب‌شده را در Metadata Statistics نگه می‌دارد تا Updateهای بعدی بتوانند همان درصد را حفظ کنند.PERSIST_SAMPLE_PERCENT / persisted_sample_percentمشاهده آموزش کامل
Statistics Options:AUTO_DROP = ONبه Statistics دستی اجازه می‌دهد هنگام تغییر Schema مزاحم، مشابه Auto Statistics مدیریت و در صورت نیاز حذف شود.AUTO_DROP / schema changeمشاهده آموزش کامل
Statistics Options:MAXDOPحداکثر درجه موازی‌سازی عملیات ساخت یا به‌روزرسانی Statistics را برای همان دستور کنترل می‌کند.MAXDOP / parallel scanمشاهده آموزش کامل
Database Options:AUTO_CREATE_STATISTICSبه Optimizer اجازه می‌دهد هنگام نیاز Query، Statistics تک‌ستونی خودکار روی ستون Predicate یا Join بسازد.AUTO_CREATE_STATISTICS / auto_createdمشاهده آموزش کامل
Database Options:AUTO_UPDATE_STATISTICSهنگام عبور تغییرات داده از Threshold داخلی، Statistics موردنیاز Query را به‌صورت خودکار Update می‌کند.AUTO_UPDATE_STATISTICS / modification thresholdمشاهده آموزش کامل
Database Options:AUTO_UPDATE_STATISTICS_ASYNCQuery محرک را با Statistics موجود Compile می‌کند و Update خودکار آمار را در پس‌زمینه قرار می‌دهد.AUTO_UPDATE_STATISTICS_ASYNC / background updateمشاهده آموزش کامل
Database Options:AUTO_CREATE_STATISTICS INCREMENTALبه دیتابیس اجازه می‌دهد Auto Statistics روی جداول پارتیشن‌بندی‌شده را در صورت پشتیبانی به‌شکل Incremental بسازد.AUTO_CREATE_STATISTICS / INCREMENTALمشاهده آموزش کامل
Statistics DMFs:sys.dm_db_stats_propertiesویژگی‌های عملی Statistics شامل last_updated، rows، rows_sampled، steps، unfiltered_rows و modification_counter را بازمی‌گرداند.last_updated / rowsمشاهده آموزش کامل
Statistics DMFs:sys.dm_db_incremental_stats_propertiesویژگی Statistics Incremental را به تفکیک partition_number شامل last_updated، rows، rows_sampled و modification_counter برمی‌گرداند.partition_number / last_updatedمشاهده آموزش کامل

ارتباط داده‌ها از Baseline تا اقدام

برای این مجموعه، Snapshotها باید با یک Capture ID مشترک ذخیره شوند. نام دیتابیس، زمان محلی و UTC، نسخه SQL Server، وضعیت سرویس و Scope Query کنار خروجی قرار می‌گیرد تا مقایسه میان CREATE STATISTICS و Statistics DMFs:sys.dm_db_incremental_stats_properties از نظر زمانی معتبر باشد.

مرحله بعد تبدیل سیگنال به فرضیه است. برای نمونه، عدد بزرگ فقط می‌گوید کجا نگاه کنیم؛ علت با Plan، Query Text، نوع Storage، تغییرات داده یا تنظیم Maintenance روشن می‌شود. این تفکیک مانع آن است که ابزار مشاهده به ماشین تولید تغییرات خودکار تبدیل شود. کاربرد این اصل در Statistics Commands با معیارهای ویژه مجموعه 16 سنجیده می‌شود.

راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server — جریان اجرا و تبدیل ورودی به خروجی — Pipelineنمای فنی اختصاصی Statistics Commands که مفاهیم CREATE_STATISTICS, UPDATE_STATISTICS, DROP_STATISTICS, SP_UPDATESTATS, DBCC_SHOW_STATISTICS را در قالب Pipeline برای بخش جریان اجرا و تبدیل ورودی به خروجی مرتبط می‌کند.Statistics Commandsجریان اجرا و تبدیل ورودی به خروجی | PipelineCREATE_STATISTICSمرحله 1UPDATE_STATISTICSمرحله 2DROP_STATISTICSمرحله 3SP_UPDATESTATSمرحله 4DBCC_SHOW_STATISTICSمرحله 5Decision / Metric PanelM1M2M3M4Master View

در نمودار دوم، مسیر CREATE_STATISTICS تا SP_UPDATESTATS به‌صورت مرحله‌ای ترسیم شده تا ورودی، تبدیل و خروجی Statistics Commands در یک نگاه قابل دنبال‌کردن باشد.

شش مثال ترکیبی و مستقل برای خانواده

مثال ترکیبی 1: ساخت نمای پایه برای خانواده ابزارها

این مثال ترکیبی از اعضای خانواده «راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server» استفاده می‌کند تا یک سؤال سطح‌بالا را بدون کپی‌کردن مثال‌های مقاله‌های فرزند پاسخ دهد.

CREATE STATISTICS ST_Sales_RegionDate ON dbo.Sales(RegionCode,OrderDate) WHERE StatusCode=1 WITH FULLSCAN;
مرحلهنمونه خروجیکاربرد
P16-1208Baseline

نکته این سناریو، ترکیب کنترل‌شده منابع خانواده 16 است؛ نتیجه باید قبل از هر تغییر با Workload و Plan واقعی تطبیق داده شود.

مثال ترکیبی 2: محدودکردن تحلیل به موارد قابل اقدام

این مثال ترکیبی از اعضای خانواده «راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server» استفاده می‌کند تا یک سؤال سطح‌بالا را بدون کپی‌کردن مثال‌های مقاله‌های فرزند پاسخ دهد. در مجموعه 16، این تصمیم برای Statistics Commands باید جدا از خانواده‌های دیگر ثبت شود.

UPDATE STATISTICS dbo.Sales ST_Sales_RegionDate WITH SAMPLE 50 PERCENT, PERSIST_SAMPLE_PERCENT=ON;
مرحلهنمونه خروجیکاربرد
P16-2221Threshold

نکته این سناریو، ترکیب کنترل‌شده منابع خانواده 16 است؛ نتیجه باید قبل از هر تغییر با Workload و Plan واقعی تطبیق داده شود. برای Statistics Commands، اجرای این توصیه در خانواده 16 نیازمند Baseline مخصوص همان موضوع است.

مثال ترکیبی 3: اتصال دو منبع برای ایجاد Context

این مثال ترکیبی از اعضای خانواده «راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server» استفاده می‌کند تا یک سؤال سطح‌بالا را بدون کپی‌کردن مثال‌های مقاله‌های فرزند پاسخ دهد. این نکته در تحلیل خانواده 16 با محور Statistics Commands به‌صورت مستقل ارزیابی می‌شود.

DBCC SHOW_STATISTICS(N'dbo.Sales',N'ST_Sales_RegionDate') WITH STAT_HEADER,HISTOGRAM;
مرحلهنمونه خروجیکاربرد
P16-3234Correlation

نکته این سناریو، ترکیب کنترل‌شده منابع خانواده 16 است؛ نتیجه باید قبل از هر تغییر با Workload و Plan واقعی تطبیق داده شود. برای موضوع Statistics Commands در مجموعه 16، همین قاعده باید با داده همان Scope تطبیق داده شود.

مثال ترکیبی 4: تبدیل Metadata به گزارش تصمیم

این مثال ترکیبی از اعضای خانواده «راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server» استفاده می‌کند تا یک سؤال سطح‌بالا را بدون کپی‌کردن مثال‌های مقاله‌های فرزند پاسخ دهد. در Runbook خانواده 16، تفسیر این بند به شواهد اختصاصی Statistics Commands وابسته است.

SELECT s.name,STATS_DATE(s.object_id,s.stats_id) AS last_updated,sp.rows,sp.rows_sampled,sp.modification_counter
FROM sys.stats AS s OUTER APPLY sys.dm_db_stats_properties(s.object_id,s.stats_id) AS sp
WHERE s.object_id=OBJECT_ID(N'dbo.Sales');
مرحلهنمونه خروجیکاربرد
P16-4247Decision

نکته این سناریو، ترکیب کنترل‌شده منابع خانواده 16 است؛ نتیجه باید قبل از هر تغییر با Workload و Plan واقعی تطبیق داده شود. کاربرد این اصل در Statistics Commands با معیارهای ویژه مجموعه 16 سنجیده می‌شود.

مثال ترکیبی 5: بررسی سناریوی نسخه یا قابلیت خاص

این مثال ترکیبی از اعضای خانواده «راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server» استفاده می‌کند تا یک سؤال سطح‌بالا را بدون کپی‌کردن مثال‌های مقاله‌های فرزند پاسخ دهد. در مجموعه 16، این تصمیم برای Statistics Commands باید جدا از خانواده‌های دیگر ثبت شود.

SELECT name,is_auto_create_stats_on,is_auto_update_stats_on,is_auto_update_stats_async_on
FROM sys.databases WHERE database_id=DB_ID();
مرحلهنمونه خروجیکاربرد
P16-5260Compatibility

نکته این سناریو، ترکیب کنترل‌شده منابع خانواده 16 است؛ نتیجه باید قبل از هر تغییر با Workload و Plan واقعی تطبیق داده شود. برای Statistics Commands، اجرای این توصیه در خانواده 16 نیازمند Baseline مخصوص همان موضوع است.

مثال ترکیبی 6: تهیه خروجی نهایی برای Runbook

این مثال ترکیبی از اعضای خانواده «راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server» استفاده می‌کند تا یک سؤال سطح‌بالا را بدون کپی‌کردن مثال‌های مقاله‌های فرزند پاسخ دهد. این نکته در تحلیل خانواده 16 با محور Statistics Commands به‌صورت مستقل ارزیابی می‌شود.

SELECT s.name,isp.partition_number,isp.last_updated,isp.rows,isp.modification_counter
FROM sys.stats AS s CROSS APPLY sys.dm_db_incremental_stats_properties(s.object_id,s.stats_id) AS isp
WHERE s.object_id=OBJECT_ID(N'dbo.FactSales') AND s.is_incremental=1;
مرحلهنمونه خروجیکاربرد
P16-6273Runbook

نکته این سناریو، ترکیب کنترل‌شده منابع خانواده 16 است؛ نتیجه باید قبل از هر تغییر با Workload و Plan واقعی تطبیق داده شود. برای موضوع Statistics Commands در مجموعه 16، همین قاعده باید با داده همان Scope تطبیق داده شود.

سناریوهای واقعی استفاده

در Incident، ابتدا ارزان‌ترین عضو خانواده 16 برای محدودکردن دامنه اجرا می‌شود. اگر سیگنال پایدار بود، ابزار جزئیات روی همان Object فراخوانی و خروجی با Query Store یا Plan متناظر می‌شود. این مسیر زمان جمع‌آوری را کوتاه و بار تشخیص را کنترل می‌کند.

در Capacity Planning، Snapshotهای هفتگی از معیارهای اصلی نگهداری و با Deploymentها علامت‌گذاری می‌شوند. تغییر روند پس از Release مهم‌تر از یک عدد مطلق است و کمک می‌کند بودجه سخت‌افزار یا بازطراحی قبل از اشباع واقعی برنامه‌ریزی گردد. در Runbook خانواده 16، تفسیر این بند به شواهد اختصاصی Statistics Commands وابسته است.

در آموزش تیم، هر عضو به یک سؤال مشخص متصل می‌شود. فراگیر باید توضیح دهد چه چیزی را مشاهده کرده، چه چیزی را هنوز نمی‌داند و کدام منبع دوم برای رد یا تأیید فرضیه لازم است؛ این تمرین از حفظ Syntax مفیدتر است. کاربرد این اصل در Statistics Commands با معیارهای ویژه مجموعه 16 سنجیده می‌شود.

هشدار مجموعه‌ای

هیچ عضو «Statistics Commands» به‌تنهایی دستور تغییر Production صادر نمی‌کند. شمارنده موقت، تخمین Optimizer یا درصد Fragmentation باید با بازه زمانی، اندازه شیء، هزینه نوشتن و SLA ترکیب شود. اجرای خودکار DDL یا Maintenance از روی یک Snapshot، کنترل کیفیت این خانواده را نقض می‌کند.

اشتباهات رایج در استفاده ترکیبی

  • ترکیب داده‌های قبل و بعد از Restart بدون ثبت مرز Reset؛ اصلاح: زمان شروع موتور و Capture ID ذخیره شود.
  • مقایسه دیتابیس‌های با حجم و Workload متفاوت با Threshold یکسان؛ اصلاح: Baseline محلی و واحد مشترک تعریف گردد.
  • اجرای ابزار عمیق روی همه اشیا؛ اصلاح: ابتدا با Query سبک فهرست کوتاه ساخته شود.
  • کپی‌کردن Recommendation به DDL؛ اصلاح: هم‌پوشانی، هزینه نگهداری و Plan در محیط آزمایش سنجیده شود.
  • نداشتن مالک و تاریخ بازبینی؛ اصلاح: هر Finding به Ticket، مسئول و معیار بسته‌شدن متصل گردد.

Performance مجموعه و هزینه جمع‌آوری

خود فرآیند مانیتورینگ باید Budget داشته باشد. در خانواده 16 Queryهای Catalog و DMV با Top، Predicate و Projection محدود اجرا می‌شوند؛ فرمان‌های اسکن یا Update نیز در پنجره جدا و با اندازه‌گیری Reads، CPU و مدت اجرا قرار می‌گیرند.

تعداد Snapshot بیشتر لزوماً دید بهتر ایجاد نمی‌کند. تناوب باید با سرعت تغییر سیگنال هماهنگ باشد: شمارنده سریع ممکن است هر چند دقیقه، Metadata پایدار روزانه و اسکن فیزیکی فقط پس از عبور از شرط اندازه یا رخداد نگهداری جمع‌آوری شود. در مجموعه 16، این تصمیم برای Statistics Commands باید جدا از خانواده‌های دیگر ثبت شود.

برای گزارش، داده خام کوتاه‌مدت و Aggregation بلندمدت جدا نگهداری شود. Retention نامحدود، Indexهای مخزن مانیتورینگ و گزارش‌های Sort سنگین می‌توانند هزینه‌ای بیشتر از سود تشخیص ایجاد کنند. برای Statistics Commands، اجرای این توصیه در خانواده 16 نیازمند Baseline مخصوص همان موضوع است.

Best Practices برای پیاده‌سازی سازمانی

  • هر Query را به یک سؤال عملی و یک مالک متصل کنید.
  • Capture ID و Timestamp مشترک برای همه منابع یک تحلیل بسازید.
  • نسخه SQL Server و مجوزهای لازم را در ابتدای Runbook ثبت نمایید.
  • مرحله مشاهده را از مرحله تغییر جدا و Approval مستقل تعریف کنید.
  • معیار قبل/بعد، زمان انتظار مشاهده اثر و Rollback را پیش از اجرا بنویسید.
  • پس از هر Incident، Queryها و Thresholdها را با شواهد جدید بازبینی کنید.
راهنمای جامع دستورات، گزینه‌ها و DMFهای Statistics در SQL Server — تصمیم عملی، خطا و کارایی — Layered Mapنمای فنی اختصاصی Statistics Commands که مفاهیم CREATE_STATISTICS, UPDATE_STATISTICS, DROP_STATISTICS, SP_UPDATESTATS, DBCC_SHOW_STATISTICS را در قالب Layered Map برای بخش تصمیم عملی، خطا و کارایی مرتبط می‌کند.Statistics Commandsتصمیم عملی، خطا و کارایی | Layered MapCREATE_STATISTICSUPDATE_STATISTICSDROP_STATISTICSSP_UPDATESTATSDBCC_SHOW_STATISTICSDecision / Metric PanelM1M2M3M4Master View

نمای سوم، رابطه UPDATE_STATISTICS، DBCC_SHOW_STATISTICS و STATS_DATE را در کنار شاخص‌های تصمیم نمایش می‌دهد و مشخص می‌کند کدام مسیر برای Performance یا رفع خطا اولویت دارد.

مزایا، محدودیت‌ها و مرز استفاده

مزیت این خانواده، پوشش چند زاویه از مسئله مدیریت چرخه عمر Statistics از ایجاد و Update تا نمونه‌برداری، تنظیمات دیتابیس، پایش Properties و نگهداری پارتیشن‌ها. است. کنارهم‌گذاشتن اعضا امکان می‌دهد نتیجه یک ابزار با ابزار دیگر کنترل شود و تصمیم از حالت تک‌منبعی خارج گردد.

محدودیت مهم، ناهمگونی زمان و ماندگاری داده‌هاست. برخی شمارنده‌ها با Restart صفر می‌شوند، بعضی خروجی لحظه‌ای‌اند و فرمان‌های Statistics یا DBCC اثر اجرایی دارند. گزارش بدون Timestamp و Context از نظر تحلیلی ناقص است. این نکته در تحلیل خانواده 16 با محور Statistics Commands به‌صورت مستقل ارزیابی می‌شود.

این مجموعه برای اجرای کور در Incident، ساخت خودکار ایندکس یا تغییر سراسری تنظیمات مناسب نیست. وقتی Baseline ندارید، نخست باید مشاهده کم‌خطر و ثبت شواهد را انجام دهید و تغییر را به مرحله بعد منتقل کنید. برای موضوع Statistics Commands در مجموعه 16، همین قاعده باید با داده همان Scope تطبیق داده شود.

سؤالات متداول مجموعه

از میان اعضای Statistics Commands از کدام مورد شروع کنیم؟

شروع به مسئله بستگی دارد. برای Baseline نخست «CREATE STATISTICS» و برای تکمیل Context سپس «UPDATE STATISTICS» را بخوانید؛ مقاله مادر ترتیب مفهومی را می‌دهد اما انتخاب عملی باید از سؤال Workload آغاز شود.

آیا اجرای همه ابزارهای خانواده 16 در یک Job مناسب است؟

خیر، هزینه و Scope اعضا متفاوت است. DMV سبک را می‌توان با تناوب بیشتر ثبت کرد، ولی فرمان یا اسکن پرهزینه باید پنجره جدا، فیلتر هدفمند و شرط توقف داشته باشد. در Runbook خانواده 16، تفسیر این بند به شواهد اختصاصی Statistics Commands وابسته است.

برای پروژه کوچک چند عضو این مجموعه کافی است؟

معمولاً یک ابزار Baseline، یک ابزار جزئیات و یک معیار اعتبارسنجی کافی است. در این خانواده می‌توان CREATE STATISTICS را با Statistics DMFs:sys.dm_db_incremental_stats_properties ترکیب کرد و با رشد سیستم پوشش را توسعه داد.

خروجی این خانواده چگونه در گزارش مدیریتی استفاده شود؟

اعداد خام به زبان ریسک و اقدام تبدیل می‌شوند: شیء متاثر، شدت، زمان مشاهده، مالک، پیشنهاد آزمایش و معیار موفقیت. گزارش مدیریتی نباید ستون‌های فنی را بدون تفسیر نمایش دهد. کاربرد این اصل در Statistics Commands با معیارهای ویژه مجموعه 16 سنجیده می‌شود.

تفاوت مقاله مادر با مقاله‌های فرزند چیست؟

این صفحه رابطه ابزارها، ترتیب استفاده و تصمیم ترکیبی را توضیح می‌دهد؛ صفحات فرزند Syntax، ستون‌ها، ده مثال و خطاهای همان موضوع را عمیق بررسی می‌کنند. در مجموعه 16، این تصمیم برای Statistics Commands باید جدا از خانواده‌های دیگر ثبت شود.

چه زمانی مشاوره تخصصی برای این مجموعه منطقی است؟

وقتی تحلیل به تغییر ایندکس، تنظیم Statistics، DDL یا عملیات گسترده منتهی می‌شود، بازبینی یک متخصص SQL Server می‌تواند ریسک Regression را کم کند. تهیه Snapshotهای این راهنما جلسه مشاوره را عملی و قابل اندازه‌گیری می‌سازد. برای Statistics Commands، اجرای این توصیه در خانواده 16 نیازمند Baseline مخصوص همان موضوع است.

خطای رایج در ترکیب اعضای Statistics Commands چیست؟

رایج‌ترین خطا، کنارهم‌گذاشتن Snapshotهایی با زمان و Scope متفاوت است. همه منابع باید Timestamp مشترک یا بازه قابل تطبیق داشته باشند و Reset شدن شمارنده‌ها ثبت شود. این نکته در تحلیل خانواده 16 با محور Statistics Commands به‌صورت مستقل ارزیابی می‌شود.

چگونه هزینه Performance گزارش جامع را کنترل کنیم؟

Queryها را مرحله‌ای اجرا کنید، ابتدا Top و فیلتر اندازه بگذارید، سپس فقط برای موارد مشکوک وارد اسکن عمیق شوید. ذخیره خروجی کوچک و تحلیل Offline معمولاً از تکرار Query سنگین بهتر است. برای موضوع Statistics Commands در مجموعه 16، همین قاعده باید با داده همان Scope تطبیق داده شود.

بهترین Practice برای تبدیل خروجی خانواده به اقدام چیست؟

هر اقدام باید یک فرضیه، شواهد از حداقل دو عضو، معیار قبل/بعد، مالک و Rollback داشته باشد. بدون این پنج جزء، خروجی در حد Recommendation غیرقطعی باقی می‌ماند. در Runbook خانواده 16، تفسیر این بند به شواهد اختصاصی Statistics Commands وابسته است.

سازگاری نسخه‌ای اعضای خانواده چگونه کنترل شود؟

وجود DMV یا Option، نام مجوز و ستون‌های قابل اتکا را با نسخه هدف بررسی کنید. Script باید نسخه را ثبت و برای قابلیت‌های جدید مسیر جایگزین یا پیام روشن داشته باشد. کاربرد این اصل در Statistics Commands با معیارهای ویژه مجموعه 16 سنجیده می‌شود.

سؤالات مصاحبه برای نقش DBA و Performance Engineer

چگونه ابزار نخست خانواده را انتخاب می‌کنید؟

ابزار نخست باید کم‌هزینه‌ترین منبعی باشد که Scope مسئله را محدود می‌کند؛ سپس فقط برای موارد منتخب سراغ جزئیات یا فرمان سنگین می‌روم. این پاسخ در خانواده 16 باید با یکی از اعضای واقعی مجموعه مثال زده شود.

چرا Timestamp مشترک مهم است؟

زیرا هم‌بستگی دو منبع با زمان متفاوت می‌تواند علت و معلول ساختگی ایجاد کند. Capture ID مشترک مرز تحلیل را حفظ می‌کند. این پاسخ در خانواده 16 باید با یکی از اعضای واقعی مجموعه مثال زده شود.

چه زمانی یک Finding به اقدام تبدیل می‌شود؟

وقتی از دو منبع مستقل پشتیبانی شود، منفعت قابل اندازه‌گیری داشته باشد و Rollback و مالک آن مشخص باشد. این پاسخ در خانواده 16 باید با یکی از اعضای واقعی مجموعه مثال زده شود.

چگونه Threshold تعیین می‌کنید؟

از Baseline همان سیستم، SLA و هزینه اقدام استفاده می‌کنم؛ عدد عمومی فقط نقطه شروع آزمایش است. این پاسخ در خانواده 16 باید با یکی از اعضای واقعی مجموعه مثال زده شود.

چرا خودکارسازی کامل خطرناک است؟

زیرا بسیاری از خروجی‌ها پیشنهاد یا Snapshot موقت‌اند و Context طراحی، Constraint، هزینه نوشتن و فصل کاری را نمی‌بینند. این پاسخ در خانواده 16 باید با یکی از اعضای واقعی مجموعه مثال زده شود.

پس از تغییر چه چیزی را ثبت می‌کنید؟

زمان اجرا، Script دقیق، Metricهای قبل/بعد، Planهای متاثر و تصمیم نگهداری یا بازگشت را در Ticket و مخزن فنی ذخیره می‌کنم. این پاسخ در خانواده 16 باید با یکی از اعضای واقعی مجموعه مثال زده شود.

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

  1. تعداد و نام اعضای همین مجموعه را با ورودی کنترل کنید.
  2. برای هر عضو نقش Baseline، جزئیات، اعتبارسنجی یا اقدام را تعیین نمایید.
  3. Slug و لینک همه صفحات فرزند را پیش از انتشار آزمایش کنید.
  4. Capture ID، Timestamp و نسخه SQL Server را در خروجی‌ها نگه دارید.
  5. Queryهای عمیق را فقط روی فهرست کوتاه و در زمان کنترل‌شده اجرا کنید.
  6. هر Recommendation را با Plan و هزینه نگهداری اعتبارسنجی نمایید.
  7. تغییر Production را با Approval، Backup و Rollback اجرا کنید.
  8. اثر تغییر را با همان معیارهای Baseline دوباره بسنجید.

جمع‌بندی و مسیر ادامه مطالعه

برای استفاده حرفه‌ای از «Statistics Commands»، ابزارها را یک زنجیره تصمیم ببینید: مشاهده کم‌هزینه، محدودکردن Scope، تحلیل جزئی، اعتبارسنجی مستقل و اقدام قابل بازگشت. این رویکرد از انباشته‌شدن گزارش‌های بدون نتیجه جلوگیری می‌کند.

صفحات تخصصی همین خانواده در ادامه قرار دارند و هرکدام مثال‌ها و کنترل‌های متفاوتی ارائه می‌کنند: در مجموعه 16، این تصمیم برای Statistics Commands باید جدا از خانواده‌های دیگر ثبت شود.

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

برنامه‌نویسی در اصفهان؛ قبول سفارش‌های برنامه‌نویسی و پایگاه داده با شماره 09131253620، همراه با انجام پروژه، آموزش برنامه‌نویسی و آموزش SQL Server.

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

برای سفارش پروژه، مشاوره یا آموزش تخصصی از طریق ایتا، واتساپ و تماس مستقیم با +989131253620 اقدام کنید یا صفحه تماس با ما را ببینید.

 

0 نظر

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

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

حرف 500 حداکثر