إدارة البيانات التاريخية باستخدام نهج الاستبقاء
هام
سيتم إيقاف Azure SQL Edge في 30 سبتمبر 2025. لمزيد من المعلومات وخيارات الترحيل، راجع إشعار الإيقاف.
إشعار
لم يعد Azure SQL Edge يدعم النظام الأساسي ARM64.
بعد تحديد نهج استبقاء البيانات لقاعدة بيانات والجدول الأساسي، يتم تشغيل مهمة مؤقت الخلفية لإزالة أي سجلات قديمة من الجدول ممكنة للاحتفاظ بالبيانات. يتم تعريف الصفوف المتطابقة وإزالتها من الجدول بشفافية، في مهمة الخلفية المجدولة والمشغلة بواسطة النظام. يتم تحديد شرط العمر لصفوف الجدول استنادا filter_column
إلى العمود المحدد في تعريف الجدول. إذا تم تعيين فترة الاستبقاء إلى أسبوع واحد، على سبيل المثال، فإن صفوف الجدول المؤهلة للتنظيف تفي بأي من الشرطين التاليين:
- إذا كان عمود عامل التصفية يستخدم نوع بيانات DATETIMEOFFSET، فإن الشرط هو
filter_column < DATEADD(WEEK, -1, SYSUTCDATETIME())
- وإلا، فإن الشرط هو
filter_column < DATEADD(WEEK, -1, SYSDATETIME())
مراحل تنظيف استبقاء البيانات
تتكون عملية تنظيف استبقاء البيانات من مرحلتين:
- الاكتشاف: في هذه المرحلة، تحدد عملية التنظيف جميع الجداول داخل قواعد بيانات المستخدم لإنشاء قائمة للتنظيف. يعمل الاكتشاف مرة واحدة في اليوم.
- التنظيف: في هذه المرحلة، يتم تشغيل التنظيف مقابل جميع الجداول مع استبقاء البيانات المحدود، المحدد في مرحلة الاكتشاف. إذا تعذر تنفيذ عملية التنظيف على جدول، تخطي هذا الجدول في التشغيل الحالي وستتم إعادة المحاولة في التكرار التالي. يتم استخدام المبادئ التالية أثناء التنظيف:
- إذا تم تأمين صف قديم بواسطة معاملة أخرى، يتم تخطي هذا الصف.
- يتم تشغيل التنظيف مع مهلة تأمين افتراضية تبلغ 5 ثوان. إذا تعذر الحصول على الأقفال على الجداول ضمن نافذة المهلة، يتم تخطي الجدول في التشغيل الحالي وستتم إعادة المحاولة في التكرار التالي.
- إذا كان هناك خطأ أثناء تنظيف جدول، يتم تخطي هذا الجدول وسيتم التقاطه في التكرار التالي.
التنظيف اليدوي
اعتمادا على إعدادات استبقاء البيانات على جدول وطبيعة حمل العمل على قاعدة البيانات، من المحتمل ألا يزيل مؤشر ترابط التنظيف التلقائي جميع الصفوف القديمة تماما أثناء تشغيله. للسماح للمستخدمين بإزالة الصفوف القديمة يدويا، sys.sp_cleanup_data_retention
تم تقديم الإجراء المخزن في Azure SQL Edge.
يأخذ هذا الإجراء المخزن ثلاث معلمات:
@schema_name
: اسم المخطط المالك للجدول. مطلوب.@table_name
: اسم الجدول الذي يتم تشغيل التنظيف اليدوي له. مطلوب.@rowcount
: متغير الإخراج. إرجاع عدد الصفوف التي تم تنظيفها بواسطة sp التنظيف اليدوي. اختياري.
لمزيد من المعلومات، راجع sys.sp_cleanup_data_retention (Transact-SQL).
يوضح المثال التالي تنفيذ sp التنظيف اليدوي للجدول dbo.data_retention_table
.
DECLARE @rowcnt BIGINT;
EXEC sys.sp_cleanup_data_retention 'dbo', 'data_retention_table', @rowcnt OUTPUT;
SELECT @rowcnt;
كيفية حذف الصفوف القديمة
تعتمد عملية التنظيف على تخطيط الفهرس للجدول. يتم إنشاء مهمة خلفية لتنفيذ تنظيف البيانات القديمة لجميع الجداول مع فترة استبقاء محدودة. تنظيف منطق فهرس rowstore (كومة الذاكرة المؤقتة أو شجرة B) يحذف الصف العمري في مجموعات أصغر (حتى 10,000)، ما يقلل الضغط على سجل قاعدة البيانات ونظام الإدخال/الإخراج الفرعي. على الرغم من أن منطق التنظيف يستخدم فهرس B-tree المطلوب، لا يمكن ضمان ترتيب عمليات الحذف للصفوف الأقدم من فترة الاستبقاء بشكل ثابت. بمعنى آخر، لا تعتمد على ترتيب التنظيف في تطبيقاتك.
تحذير
في حالة كومات الذاكرة المؤقتة والفهارس B-tree، يقوم استبقاء البيانات بتشغيل استعلام حذف على الجداول الأساسية، والتي يمكن أن تتعارض مع مشغلات الحذف على الجداول. يجب إما إزالة مشغلات الحذف من الجداول، أو تجنب استخدام استبقاء البيانات على الجداول التي تحتوي على مشغلات DML حذف.
تقوم مهمة التنظيف لمؤشرات تخزين الأعمدة المجمعة بإزالة مجموعات الصفوف بأكملها في وقت واحد (تحتوي عادة على مليون صف لكل منها)، وهو أمر فعال، خاصة عندما يتم إنشاء البيانات وتتقادم بوتيرة عالية.
ضغط البيانات الممتاز وتنظيف الاستبقاء الفعال يجعل فهارس تخزين الأعمدة المجمعة خيارا مثاليا للسيناريوهات عندما يولد حمل العمل بسرعة كمية كبيرة من البيانات.
مراقبة تنظيف استبقاء البيانات
يمكن مراقبة عمليات تنظيف نهج استبقاء البيانات باستخدام الأحداث الموسعة في Azure SQL Edge. لمزيد من المعلومات حول الأحداث الموسعة، راجع نظرة عامة على الأحداث الموسعة.
تساعد الأحداث الموسعة التالية في تعقب حالة عمليات التنظيف.
Name | الوصف |
---|---|
data_retention_task_started | يحدث عند بدء مهمة الخلفية لتنظيف الجداول باستخدام نهج استبقاء. |
data_retention_task_completed | يحدث عند انتهاء مهمة الخلفية لتنظيف الجداول باستخدام نهج الاستبقاء. |
data_retention_task_exception | يحدث عندما تفشل مهمة الخلفية لتنظيف الجداول باستخدام نهج استبقاء، خارج عملية تنظيف الاستبقاء الخاصة بتلك الجداول. |
data_retention_cleanup_started | يحدث عند بدء عملية تنظيف جدول مع نهج استبقاء البيانات. |
data_retention_cleanup_exception | يحدث عند فشل عملية تنظيف جدول مع نهج الاستبقاء. |
data_retention_cleanup_completed | يحدث عند انتهاء عملية تنظيف جدول مع نهج استبقاء البيانات. |
بالإضافة إلى ذلك، تمت إضافة نوع مخزن مؤقت جديد للحلقة باسم RING_BUFFER_DATA_RETENTION_CLEANUP
إلى طريقة عرض الإدارة الديناميكية sys.dm_os_ring_buffers
. يمكن استخدام طريقة العرض هذه لمراقبة عمليات تنظيف الاحتفاظ بالبيانات.