آموزش TRUNCATE TABLE WITH PARTITIONS در SQL Server؛ آموزش کامل با ۱۰ مثال SQL Server

آموزش TRUNCATE TABLE WITH PARTITIONS در SQL Server

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

نظرات 0

آموزش TRUNCATE TABLE WITH PARTITIONS در SQL Server

مقدمه اختصاصی TRUNCATE TABLE ... WITH (PARTITIONS(...))

TRUNCATE TABLE ... WITH (PARTITIONS(...)) صفحات یک یا چند پارتیشن انتخابی را سریع آزاد می‌کند، بدون آنکه کل جدول حذف شود. این قابلیت زمانی نتیجه مطلوب می‌دهد که مرز داده، الگوی Query و برنامه نگهداری از ابتدا هماهنگ شوند.

هدف عملی این مقاله، پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است. مسیر آموزش از نحو و پارامترها شروع می‌شود و با ده مثال مستقل، خطاها، Performance و کنترل استقرار ادامه می‌یابد.

برای دیدن جایگاه TRUNCATE TABLE ... WITH (PARTITIONS(...)) در کل مجموعه، راهنمای جامع پارتیشن‌بندی جداول در SQL Server را باز کنید.

تعریف فنی و نحو TRUNCATE TABLE ... WITH (PARTITIONS(...))

در سطح کاتالوگ، TRUNCATE TABLE ... WITH (PARTITIONS(...)) روی اشیای پارتیشن‌بندی و وابستگی‌های آن‌ها اثر می‌گذارد. خروجی دستور باید با متادیتا و شمار ردیف‌ها تأیید شود، نه فقط با نبود پیام خطا.

قاعده ایمنی TRUNCATE TABLE ... WITH (PARTITIONS(...)): پیش‌شرط، دامنه اثر، Transaction کوتاه و برنامه بازگشت باید پیش از اجرای تولید مشخص باشند.

Syntax استاندارد TRUNCATE TABLE ... WITH (PARTITIONS(...))

TRUNCATE TABLE dbo.PartitionedTable WITH (PARTITIONS (2));

پارامترهای کلیدی TRUNCATE TABLE ... WITH (PARTITIONS(...))

جزءتوضیح
نام جدولجدول پارتیشن‌بندی‌شده
شماره پارتیشنعدد معتبر
فهرست یا TOانتخاب چند پارتیشن
Index هم‌ترازپیش‌شرط حذف انتخابی

نقشه مفهومی TRUNCATE TABLE ... WITH (PARTITIONS(...))

TRUNCATE TABLE ... WITH (PARTITIONS(...))؛ نمودار فنی 1رابطه Partition List، Partition Range، Page Deallocation، Aligned Index و Minimal Logging در TRUNCATE TABLE ... WITH (PARTITIONS(...)).TRUNCATE TABLE ... WITH (PARTITIONS(...))Partition Listکنترل مرحله 1Partition Rangeکنترل مرحله 2Page Deallocationکنترل مرحله 3Aligned Indexکنترل مرحله 4Minimal Loggingکنترل مرحله 5Fast Cleanupکنترل مرحله 6Best Practice: Partition List + Aligned Index + Fast Cleanupورودی، وابستگی، خطا و خروجی قبل از استقرار بررسی می‌شوند.

تصویر اول نشان می‌دهد Partition List چگونه با Partition Range، Page Deallocation و کنترل نتیجه در فرایند TRUNCATE TABLE ... WITH (PARTITIONS(...)) مرتبط می‌شود.

ده مثال عملی منحصربه‌فرد برای TRUNCATE TABLE ... WITH (PARTITIONS(...))

مثال 1: تعریف پایه با مقدار ثابت در TRUNCATE TABLE ... WITH (PARTITIONS(...))

در مثال شماره 1، سناریوی «تعریف پایه با مقدار ثابت» برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) اجرا می‌شود. هدف این است که رفتار Partition List در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.

CREATE PARTITION FUNCTION pf_Truncate_01 (int) AS RANGE RIGHT FOR VALUES (100,200,300);
CREATE PARTITION SCHEME ps_Truncate_01 AS PARTITION pf_Truncate_01 ALL TO ([PRIMARY]);
CREATE TABLE dbo.Truncate_01 (Id int NOT NULL, Note nvarchar(40) NULL) ON ps_Truncate_01(Id);
INSERT INTO dbo.Truncate_01 VALUES (90,N'P1'),(110,N'P2'),(210,N'P3'),(310,N'P4');
TRUNCATE TABLE dbo.Truncate_01 WITH (PARTITIONS (2));
SELECT $PARTITION.pf_Truncate_01(Id) AS PartitionNo, COUNT(*) AS RowCount
FROM dbo.Truncate_01 GROUP BY $PARTITION.pf_Truncate_01(Id) ORDER BY PartitionNo;
شاخصخروجی نمونه
پارتیشن حذف‌شده2
ردیف‌های دیگرباقی می‌مانند

تحلیل مثال 1 برای TRUNCATE TABLE ... WITH (PARTITIONS(...)): این سناریو نشان می‌دهد Partition Range باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است.

مثال 2: اجرای سناریو روی جدول نمونه در TRUNCATE TABLE ... WITH (PARTITIONS(...))

در مثال شماره 2، سناریوی «اجرای سناریو روی جدول نمونه» برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) اجرا می‌شود. هدف این است که رفتار Partition Range در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.

CREATE PARTITION FUNCTION pf_Truncate_02 (int) AS RANGE RIGHT FOR VALUES (200,300,400);
CREATE PARTITION SCHEME ps_Truncate_02 AS PARTITION pf_Truncate_02 ALL TO ([PRIMARY]);
CREATE TABLE dbo.Truncate_02 (Id int NOT NULL, Note nvarchar(40) NULL) ON ps_Truncate_02(Id);
INSERT INTO dbo.Truncate_02 VALUES (190,N'P1'),(210,N'P2'),(310,N'P3'),(410,N'P4');
TRUNCATE TABLE dbo.Truncate_02 WITH (PARTITIONS (3));
SELECT $PARTITION.pf_Truncate_02(Id) AS PartitionNo, COUNT(*) AS RowCount
FROM dbo.Truncate_02 GROUP BY $PARTITION.pf_Truncate_02(Id) ORDER BY PartitionNo;
شاخصخروجی نمونه
پارتیشن حذف‌شده3
ردیف‌های دیگرباقی می‌مانند

تحلیل مثال 2 برای TRUNCATE TABLE ... WITH (PARTITIONS(...)): این سناریو نشان می‌دهد Page Deallocation باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است.

مثال 3: استفاده در SELECT و گزارش‌گیری در TRUNCATE TABLE ... WITH (PARTITIONS(...))

در مثال شماره 3، سناریوی «استفاده در SELECT و گزارش‌گیری» برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) اجرا می‌شود. هدف این است که رفتار Page Deallocation در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.

CREATE PARTITION FUNCTION pf_Truncate_03 (int) AS RANGE RIGHT FOR VALUES (300,400,500);
CREATE PARTITION SCHEME ps_Truncate_03 AS PARTITION pf_Truncate_03 ALL TO ([PRIMARY]);
CREATE TABLE dbo.Truncate_03 (Id int NOT NULL, Note nvarchar(40) NULL) ON ps_Truncate_03(Id);
INSERT INTO dbo.Truncate_03 VALUES (290,N'P1'),(310,N'P2'),(410,N'P3'),(510,N'P4');
TRUNCATE TABLE dbo.Truncate_03 WITH (PARTITIONS (4));
SELECT $PARTITION.pf_Truncate_03(Id) AS PartitionNo, COUNT(*) AS RowCount
FROM dbo.Truncate_03 GROUP BY $PARTITION.pf_Truncate_03(Id) ORDER BY PartitionNo;
شاخصخروجی نمونه
پارتیشن حذف‌شده4
ردیف‌های دیگرباقی می‌مانند

تحلیل مثال 3 برای TRUNCATE TABLE ... WITH (PARTITIONS(...)): این سناریو نشان می‌دهد Aligned Index باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است.

مثال 4: کنترل شرط و بازه هدف در TRUNCATE TABLE ... WITH (PARTITIONS(...))

در مثال شماره 4، سناریوی «کنترل شرط و بازه هدف» برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) اجرا می‌شود. هدف این است که رفتار Aligned Index در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.

CREATE PARTITION FUNCTION pf_Truncate_04 (int) AS RANGE RIGHT FOR VALUES (400,500,600);
CREATE PARTITION SCHEME ps_Truncate_04 AS PARTITION pf_Truncate_04 ALL TO ([PRIMARY]);
CREATE TABLE dbo.Truncate_04 (Id int NOT NULL, Note nvarchar(40) NULL) ON ps_Truncate_04(Id);
INSERT INTO dbo.Truncate_04 VALUES (390,N'P1'),(410,N'P2'),(510,N'P3'),(610,N'P4');
TRUNCATE TABLE dbo.Truncate_04 WITH (PARTITIONS (1));
SELECT $PARTITION.pf_Truncate_04(Id) AS PartitionNo, COUNT(*) AS RowCount
FROM dbo.Truncate_04 GROUP BY $PARTITION.pf_Truncate_04(Id) ORDER BY PartitionNo;
شاخصخروجی نمونه
پارتیشن حذف‌شده1
ردیف‌های دیگرباقی می‌مانند

تحلیل مثال 4 برای TRUNCATE TABLE ... WITH (PARTITIONS(...)): این سناریو نشان می‌دهد Minimal Logging باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است.

مثال 5: ترکیب با قابلیت مکمل SQL Server در TRUNCATE TABLE ... WITH (PARTITIONS(...))

در مثال شماره 5، سناریوی «ترکیب با قابلیت مکمل SQL Server» برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) اجرا می‌شود. هدف این است که رفتار Minimal Logging در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.

CREATE PARTITION FUNCTION pf_Truncate_05 (int) AS RANGE RIGHT FOR VALUES (500,600,700);
CREATE PARTITION SCHEME ps_Truncate_05 AS PARTITION pf_Truncate_05 ALL TO ([PRIMARY]);
CREATE TABLE dbo.Truncate_05 (Id int NOT NULL, Note nvarchar(40) NULL) ON ps_Truncate_05(Id);
INSERT INTO dbo.Truncate_05 VALUES (490,N'P1'),(510,N'P2'),(610,N'P3'),(710,N'P4');
TRUNCATE TABLE dbo.Truncate_05 WITH (PARTITIONS (2));
SELECT $PARTITION.pf_Truncate_05(Id) AS PartitionNo, COUNT(*) AS RowCount
FROM dbo.Truncate_05 GROUP BY $PARTITION.pf_Truncate_05(Id) ORDER BY PartitionNo;
شاخصخروجی نمونه
پارتیشن حذف‌شده2
ردیف‌های دیگرباقی می‌مانند

تحلیل مثال 5 برای TRUNCATE TABLE ... WITH (PARTITIONS(...)): این سناریو نشان می‌دهد Fast Cleanup باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است.

TRUNCATE TABLE ... WITH (PARTITIONS(...))؛ نمودار فنی 2رابطه Partition Range، Page Deallocation، Aligned Index، Minimal Logging و Fast Cleanup در TRUNCATE TABLE ... WITH (PARTITIONS(...)).TRUNCATE TABLE ... WITH (PARTITIONS(...))Partition Rangeکنترل مرحله 1Page Deallocationکنترل مرحله 2Aligned Indexکنترل مرحله 3Minimal Loggingکنترل مرحله 4Fast Cleanupکنترل مرحله 5Safety Guardکنترل مرحله 6Best Practice: Partition Range + Minimal Logging + Safety Guardورودی، وابستگی، خطا و خروجی قبل از استقرار بررسی می‌شوند.

تصویر دوم جریان ورودی تا خروجی TRUNCATE TABLE ... WITH (PARTITIONS(...)) را با تمرکز بر Partition Range، Minimal Logging و اعتبارسنجی نتیجه نمایش می‌دهد.

مثال 6: بررسی رفتار NULL یا داده مرزی در TRUNCATE TABLE ... WITH (PARTITIONS(...))

در مثال شماره 6، سناریوی «بررسی رفتار NULL یا داده مرزی» برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) اجرا می‌شود. هدف این است که رفتار Fast Cleanup در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.

CREATE PARTITION FUNCTION pf_Truncate_06 (int) AS RANGE RIGHT FOR VALUES (600,700,800);
CREATE PARTITION SCHEME ps_Truncate_06 AS PARTITION pf_Truncate_06 ALL TO ([PRIMARY]);
CREATE TABLE dbo.Truncate_06 (Id int NOT NULL, Note nvarchar(40) NULL) ON ps_Truncate_06(Id);
INSERT INTO dbo.Truncate_06 VALUES (590,N'P1'),(610,N'P2'),(710,N'P3'),(810,N'P4');
TRUNCATE TABLE dbo.Truncate_06 WITH (PARTITIONS (3));
SELECT $PARTITION.pf_Truncate_06(Id) AS PartitionNo, COUNT(*) AS RowCount
FROM dbo.Truncate_06 GROUP BY $PARTITION.pf_Truncate_06(Id) ORDER BY PartitionNo;
شاخصخروجی نمونه
پارتیشن حذف‌شده3
ردیف‌های دیگرباقی می‌مانند

تحلیل مثال 6 برای TRUNCATE TABLE ... WITH (PARTITIONS(...)): این سناریو نشان می‌دهد Safety Guard باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است.

مثال 7: ثبت خطای رایج و نسخه اصلاح‌شده در TRUNCATE TABLE ... WITH (PARTITIONS(...))

در مثال شماره 7، سناریوی «ثبت خطای رایج و نسخه اصلاح‌شده» برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) اجرا می‌شود. هدف این است که رفتار Safety Guard در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.

CREATE PARTITION FUNCTION pf_Truncate_07 (int) AS RANGE RIGHT FOR VALUES (700,800,900);
CREATE PARTITION SCHEME ps_Truncate_07 AS PARTITION pf_Truncate_07 ALL TO ([PRIMARY]);
CREATE TABLE dbo.Truncate_07 (Id int NOT NULL, Note nvarchar(40) NULL) ON ps_Truncate_07(Id);
INSERT INTO dbo.Truncate_07 VALUES (690,N'P1'),(710,N'P2'),(810,N'P3'),(910,N'P4');
TRUNCATE TABLE dbo.Truncate_07 WITH (PARTITIONS (4));
SELECT $PARTITION.pf_Truncate_07(Id) AS PartitionNo, COUNT(*) AS RowCount
FROM dbo.Truncate_07 GROUP BY $PARTITION.pf_Truncate_07(Id) ORDER BY PartitionNo;
شاخصخروجی نمونه
پارتیشن حذف‌شده4
ردیف‌های دیگرباقی می‌مانند

تحلیل مثال 7 برای TRUNCATE TABLE ... WITH (PARTITIONS(...)): این سناریو نشان می‌دهد Partition List باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است.

مثال 8: سناریوی سازمانی دوره‌ای در TRUNCATE TABLE ... WITH (PARTITIONS(...))

در مثال شماره 8، سناریوی «سناریوی سازمانی دوره‌ای» برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) اجرا می‌شود. هدف این است که رفتار Partition List در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.

CREATE PARTITION FUNCTION pf_Truncate_08 (int) AS RANGE RIGHT FOR VALUES (800,900,1000);
CREATE PARTITION SCHEME ps_Truncate_08 AS PARTITION pf_Truncate_08 ALL TO ([PRIMARY]);
CREATE TABLE dbo.Truncate_08 (Id int NOT NULL, Note nvarchar(40) NULL) ON ps_Truncate_08(Id);
INSERT INTO dbo.Truncate_08 VALUES (790,N'P1'),(810,N'P2'),(910,N'P3'),(1010,N'P4');
TRUNCATE TABLE dbo.Truncate_08 WITH (PARTITIONS (1));
SELECT $PARTITION.pf_Truncate_08(Id) AS PartitionNo, COUNT(*) AS RowCount
FROM dbo.Truncate_08 GROUP BY $PARTITION.pf_Truncate_08(Id) ORDER BY PartitionNo;
شاخصخروجی نمونه
پارتیشن حذف‌شده1
ردیف‌های دیگرباقی می‌مانند

تحلیل مثال 8 برای TRUNCATE TABLE ... WITH (PARTITIONS(...)): این سناریو نشان می‌دهد Partition Range باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است.

مثال 9: اجرای تراکنشی و امکان Rollback در TRUNCATE TABLE ... WITH (PARTITIONS(...))

در مثال شماره 9، سناریوی «اجرای تراکنشی و امکان Rollback» برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) اجرا می‌شود. هدف این است که رفتار Partition Range در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.

CREATE PARTITION FUNCTION pf_Truncate_09 (int) AS RANGE RIGHT FOR VALUES (900,1000,1100);
CREATE PARTITION SCHEME ps_Truncate_09 AS PARTITION pf_Truncate_09 ALL TO ([PRIMARY]);
CREATE TABLE dbo.Truncate_09 (Id int NOT NULL, Note nvarchar(40) NULL) ON ps_Truncate_09(Id);
INSERT INTO dbo.Truncate_09 VALUES (890,N'P1'),(910,N'P2'),(1010,N'P3'),(1110,N'P4');
TRUNCATE TABLE dbo.Truncate_09 WITH (PARTITIONS (2));
SELECT $PARTITION.pf_Truncate_09(Id) AS PartitionNo, COUNT(*) AS RowCount
FROM dbo.Truncate_09 GROUP BY $PARTITION.pf_Truncate_09(Id) ORDER BY PartitionNo;
شاخصخروجی نمونه
پارتیشن حذف‌شده2
ردیف‌های دیگرباقی می‌مانند

تحلیل مثال 9 برای TRUNCATE TABLE ... WITH (PARTITIONS(...)): این سناریو نشان می‌دهد Page Deallocation باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است.

مثال 10: ممیزی Performance و متادیتا در TRUNCATE TABLE ... WITH (PARTITIONS(...))

در مثال شماره 10، سناریوی «ممیزی Performance و متادیتا» برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) اجرا می‌شود. هدف این است که رفتار Page Deallocation در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.

CREATE PARTITION FUNCTION pf_Truncate_10 (int) AS RANGE RIGHT FOR VALUES (1000,1100,1200);
CREATE PARTITION SCHEME ps_Truncate_10 AS PARTITION pf_Truncate_10 ALL TO ([PRIMARY]);
CREATE TABLE dbo.Truncate_10 (Id int NOT NULL, Note nvarchar(40) NULL) ON ps_Truncate_10(Id);
INSERT INTO dbo.Truncate_10 VALUES (990,N'P1'),(1010,N'P2'),(1110,N'P3'),(1210,N'P4');
TRUNCATE TABLE dbo.Truncate_10 WITH (PARTITIONS (3));
SELECT $PARTITION.pf_Truncate_10(Id) AS PartitionNo, COUNT(*) AS RowCount
FROM dbo.Truncate_10 GROUP BY $PARTITION.pf_Truncate_10(Id) ORDER BY PartitionNo;
شاخصخروجی نمونه
پارتیشن حذف‌شده3
ردیف‌های دیگرباقی می‌مانند

تحلیل مثال 10 برای TRUNCATE TABLE ... WITH (PARTITIONS(...)): این سناریو نشان می‌دهد Aligned Index باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE است.

خطاهای رایج TRUNCATE TABLE ... WITH (PARTITIONS(...))

خطاهای TRUNCATE TABLE ... WITH (PARTITIONS(...)) فقط Syntax نیستند و اغلب از ناسازگاری میان تعریف منطقی و وضعیت واقعی جدول، Scheme، Function یا Index ناشی می‌شوند.

  • شماره خارج از محدوده؛ این مورد در سناریوی TRUNCATE TABLE ... WITH (PARTITIONS(...)) باید پیش از اجرا کنترل شود.
  • Index غیرهم‌تراز؛ این مورد در سناریوی TRUNCATE TABLE ... WITH (PARTITIONS(...)) باید پیش از اجرا کنترل شود.
  • انتظار اجرای DELETE Trigger؛ این مورد در سناریوی TRUNCATE TABLE ... WITH (PARTITIONS(...)) باید پیش از اجرا کنترل شود.
  • اشتباه شماره پارتیشن با مقدار کلید؛ این مورد در سناریوی TRUNCATE TABLE ... WITH (PARTITIONS(...)) باید پیش از اجرا کنترل شود.

برای عیب‌یابی TRUNCATE TABLE ... WITH (PARTITIONS(...)) از sys.partition_functions، sys.partition_schemes، sys.partition_range_values، sys.indexes و sys.partitions استفاده کنید تا اصلاح بر اساس داده واقعی باشد.

Performance و هم‌زمانی در TRUNCATE TABLE ... WITH (PARTITIONS(...))

ملاحظه کارایی 1 در TRUNCATE TABLE ... WITH (PARTITIONS(...)): سرعت بالا در حذف حجیم. علاوه بر زمان اجرا، رشد لاگ، قفل Sch-M، تعداد ردیف و اثر بر Sessionهای هم‌زمان اندازه‌گیری شود.

ملاحظه کارایی 2 در TRUNCATE TABLE ... WITH (PARTITIONS(...)): ارزیابی قفل. علاوه بر زمان اجرا، رشد لاگ، قفل Sch-M، تعداد ردیف و اثر بر Sessionهای هم‌زمان اندازه‌گیری شود.

ملاحظه کارایی 3 در TRUNCATE TABLE ... WITH (PARTITIONS(...)): تأیید شماره با $PARTITION. علاوه بر زمان اجرا، رشد لاگ، قفل Sch-M، تعداد ردیف و اثر بر Sessionهای هم‌زمان اندازه‌گیری شود.

Best Practices اجرای TRUNCATE TABLE ... WITH (PARTITIONS(...))

  1. شمار ردیف را پیش از حذف کنترل کنید؛ این اصل برای اجرای پایدار TRUNCATE TABLE ... WITH (PARTITIONS(...)) در محیط سازمانی ضروری است.
  2. برای آرشیو ابتدا SWITCH OUT کنید؛ این اصل برای اجرای پایدار TRUNCATE TABLE ... WITH (PARTITIONS(...)) در محیط سازمانی ضروری است.
  3. Indexها را هم‌تراز نگه دارید؛ این اصل برای اجرای پایدار TRUNCATE TABLE ... WITH (PARTITIONS(...)) در محیط سازمانی ضروری است.
  4. عملیات را ثبت کنید؛ این اصل برای اجرای پایدار TRUNCATE TABLE ... WITH (PARTITIONS(...)) در محیط سازمانی ضروری است.
  5. Transaction و گارد ایمنی داشته باشید؛ این اصل برای اجرای پایدار TRUNCATE TABLE ... WITH (PARTITIONS(...)) در محیط سازمانی ضروری است.

با اجرای این چک‌لیست، TRUNCATE TABLE ... WITH (PARTITIONS(...)) از یک دستور دستی به فرایندی قابل تکرار، قابل ممیزی و قابل بازگشت تبدیل می‌شود.

تصمیم فنی و کنترل ریسک TRUNCATE TABLE ... WITH (PARTITIONS(...))

TRUNCATE TABLE ... WITH (PARTITIONS(...))؛ نمودار فنی 3رابطه Page Deallocation، Aligned Index، Minimal Logging، Fast Cleanup و Safety Guard در TRUNCATE TABLE ... WITH (PARTITIONS(...)).TRUNCATE TABLE ... WITH (PARTITIONS(...))Page Deallocationکنترل مرحله 1Aligned Indexکنترل مرحله 2Minimal Loggingکنترل مرحله 3Fast Cleanupکنترل مرحله 4Safety Guardکنترل مرحله 5Partition Listکنترل مرحله 6Best Practice: Page Deallocation + Fast Cleanup + Partition Listورودی، وابستگی، خطا و خروجی قبل از استقرار بررسی می‌شوند.

تصویر سوم انتخاب میان اجرای مستقیم، اجرای روی پارتیشن خالی یا توقف برای بازطراحی را بر اساس Page Deallocation، Fast Cleanup و هزینه عملیاتی نشان می‌دهد.

ده پرسش متداول اختصاصی TRUNCATE TABLE ... WITH (PARTITIONS(...))

TRUNCATE TABLE ... WITH (PARTITIONS(...)): چه مسئله‌ای را حل می‌کند؟

TRUNCATE TABLE ... WITH (PARTITIONS(...)) برای پاک‌سازی بازه‌های مشخص با لاگ کمتر از DELETE به‌کار می‌رود و باید همراه Partition List و Partition Range تحلیل شود.

TRUNCATE TABLE ... WITH (PARTITIONS(...)): چه پیش‌نیازی دارد؟

آشنایی با Filegroup، Index، نوع داده و متادیتا لازم است؛ سپس Page Deallocation روی داده آزمایشی بررسی شود.

TRUNCATE TABLE ... WITH (PARTITIONS(...)): برای سامانه کوچک مناسب است؟

اگر چرخه آرشیو یا نگهداری مشخص باشد، TRUNCATE TABLE ... WITH (PARTITIONS(...)) حتی روی PRIMARY ارزش مدیریتی دارد؛ در غیر این صورت هزینه پیچیدگی باید سنجیده شود.

TRUNCATE TABLE ... WITH (PARTITIONS(...)): چه زمانی متخصص لازم است؟

در جدول بزرگ، SLA سخت، چند Filegroup یا Sliding Window، طراحی TRUNCATE TABLE ... WITH (PARTITIONS(...)) باید با تست بار و برنامه بازگشت تخصصی انجام شود.

TRUNCATE TABLE ... WITH (PARTITIONS(...)): با چه قابلیتی اشتباه می‌شود؟

نقش TRUNCATE TABLE ... WITH (PARTITIONS(...)) باید از مرزبندی، نگاشت فیزیکی و عملیات نگهداری جدا شود؛ مفهوم محوری این مقاله Partition List است.

TRUNCATE TABLE ... WITH (PARTITIONS(...)): برای سفارش پیاده‌سازی چه اطلاعاتی لازم است؟

حجم و رشد داده، نسخه SQL Server، ساختار Index، کلید پارتیشن و پنجره نگهداری برای برآورد اجرای TRUNCATE TABLE ... WITH (PARTITIONS(...)) لازم‌اند.

TRUNCATE TABLE ... WITH (PARTITIONS(...)): رایج‌ترین خطا چیست؟

در TRUNCATE TABLE ... WITH (PARTITIONS(...)) یکی از خطاهای مهم «شماره خارج از محدوده» است و باید پیش‌شرط‌ها از کاتالوگ کنترل شوند.

TRUNCATE TABLE ... WITH (PARTITIONS(...)): اثر Performance چگونه است؟

هزینه TRUNCATE TABLE ... WITH (PARTITIONS(...)) به حجم داده و پارتیشن درگیر وابسته است؛ سرعت بالا در حذف حجیم و پایش لاگ و قفل معیار اصلی‌اند.

TRUNCATE TABLE ... WITH (PARTITIONS(...)): Best Practice اصلی چیست؟

برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) باید «شمار ردیف را پیش از حذف کنترل کنید» و خروجی کنترل پیش و پس از اجرا در مخزن تغییرات ثبت شود.

TRUNCATE TABLE ... WITH (PARTITIONS(...)): سازگاری نسخه‌ها چگونه است؟

قابلیت‌های پایه TRUNCATE TABLE ... WITH (PARTITIONS(...)) در نسخه‌های مدرن SQL Server وجود دارند، اما مجوز و محدودیت نسخه هدف باید جداگانه آزموده شود.

سؤال‌های مصاحبه درباره TRUNCATE TABLE ... WITH (PARTITIONS(...))

  1. نقش TRUNCATE TABLE ... WITH (PARTITIONS(...)) را در زنجیره Partition Function، Scheme و Table توضیح دهید.
  2. پیش از TRUNCATE TABLE ... WITH (PARTITIONS(...)) کدام Viewهای سیستمی را بررسی می‌کنید؟
  3. اثر TRUNCATE TABLE ... WITH (PARTITIONS(...)) بر لاگ و قفل چگونه اندازه‌گیری می‌شود؟
  4. برنامه Rollback برای شکست TRUNCATE TABLE ... WITH (PARTITIONS(...)) چیست؟
  5. در چه شرایطی اجرای TRUNCATE TABLE ... WITH (PARTITIONS(...)) را متوقف می‌کنید؟

پاسخ حرفه‌ای باید علاوه بر نحو، درباره Partition List، وابستگی، حجم داده و کنترل پس از اجرای TRUNCATE TABLE ... WITH (PARTITIONS(...)) صحبت کند.

چک‌لیست نهایی TRUNCATE TABLE ... WITH (PARTITIONS(...))

  • تعریف واقعی اشیای مرتبط با TRUNCATE TABLE ... WITH (PARTITIONS(...)) از کاتالوگ خوانده شده است.
  • مقدارهای قبل، برابر و بعد از مرز برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) آزموده شده‌اند.
  • فضای لاگ و قفل احتمالی TRUNCATE TABLE ... WITH (PARTITIONS(...)) در محیط نزدیک به تولید سنجیده شده است.
  • TRY/CATCH و Transaction کوتاه برای TRUNCATE TABLE ... WITH (PARTITIONS(...)) وجود دارد.
  • خروجی کنترلی و برنامه بازگشت TRUNCATE TABLE ... WITH (PARTITIONS(...)) ثبت شده است.

جمع‌بندی آموزش TRUNCATE TABLE ... WITH (PARTITIONS(...))

TRUNCATE TABLE ... WITH (PARTITIONS(...)) زمانی قابل اتکا است که نقش آن در معماری پارتیشن‌بندی درست فهمیده شود. ده مثال این مقاله، مسیر تعریف، اجرا، کنترل خطا و سنجش Performance را به‌صورت مستقل پوشش دادند.

برای مقایسه TRUNCATE TABLE ... WITH (PARTITIONS(...)) با سایر دستورات، به مقاله مادر Table Partitioning بازگردید و ترتیب عملیات را در یک Sliding Window کامل مرور کنید.

خدمات برنامه‌نویسی و پایگاه داده برای TRUNCATE TABLE ... WITH (PARTITIONS(...))

برای تبدیل آموزش TRUNCATE TABLE ... WITH (PARTITIONS(...)) به یک راهکار اجرایی، خدمات برنامه‌نویسی در اصفهان و پذیرش سفارش پایگاه داده با شماره 09131253620 ارائه می‌شود.

این مجموعه معتبر از سال ۱۳۷۵ شمسی در انجام پروژه، آموزش برنامه‌نویسی و آموزش SQL Server فعالیت حرفه‌ای دارد و می‌تواند طراحی مربوط به TRUNCATE TABLE ... WITH (PARTITIONS(...)) را بازبینی یا اجرا کند.

برای سفارش پروژه‌ای که TRUNCATE TABLE ... WITH (PARTITIONS(...)) بخشی از آن است، از تماس مستقیم 09131253620 استفاده کنید؛ ایتا، واتساپ و تماس مستقیم با +989131253620 نیز در دسترس است.

تماس با ما برای مشاوره تخصصی TRUNCATE TABLE ... WITH (PARTITIONS(...))

 

0 نظر

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

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

حرف 500 حداکثر