إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تلميح
Microsoft Fabric Data Warehouse هو مستودع علائقي على نطاق مؤسسي قائم على أساس بحيرة البيانات، مع بنية جاهزة للمستقبل، وذكاء اصطناعي مدمج، وميزات جديدة. إذا كنت جديدا في مستودع البيانات، ابدأ ب Fabric Data Warehouse. يمكن لأحمال عمل تجمع SQL المخصصة الحالية الترقية إلى Fabric للوصول إلى قدرات جديدة في علوم البيانات، والتحليلات اللحظية، والتقارير.
في هذا المقال، ستجد توصيات وتحسينات أداء لتحميل البيانات.
Prepare data in تخزين Azure
لتقليل التأخير، قم بتحديد موقع مشترك لطبقة التخزين ومجموعة SQL المخصصة لديك.
عند تصدير البيانات إلى تنسيق ملف ORC، قد تظهر أخطاء نفاد الذاكرة في Java عند وجود أعمدة نصية كبيرة. لتجاوز هذا القيد، قم بتصدير جزء فقط من الأعمدة.
لا يمكن ل PolyBase تحميل صفوف تحتوي على أكثر من 1,000,000 بايت من البيانات. عندما تضع البيانات في ملفات النص في تخزين Azure Blob أو Azure Data Lake Store، يجب أن يكون لديها أقل من 1,000,000 بايت من البيانات. هذا القيد في البايت صحيح بغض النظر عن مخطط الجدول.
جميع صيغ الملفات لها خصائص أداء مختلفة. لأسرع تحميل، استخدم ملفات نصية مضغوطة ومحددة. الفرق بين أداء UTF-8 وUTF-16 ضئيل.
قسم الملفات المضغوطة الكبيرة إلى ملفات مضغوطة أصغر.
شغل الأحمال مع كمية كافية من الحوسبة
للحصول على أسرع سرعة تحميل، قم بتشغيل مهمة تحميل واحدة فقط في كل مرة. إذا لم يكن ذلك ممكنا، شغل عددا ضئيلا من الأحمال في نفس الوقت. إذا كنت تتوقع مهمة تحميل كبيرة، فكر في توسيع مجموعة SQL المخصصة لديك قبل التحميل.
لتشغيل الأحمال بموارد حوسبة مناسبة، أنشئ مستخدمي تحميل مخصصين لتشغيل الأحمال. تعيين كل مستخدم محمل لفئة موارد محددة أو مجموعة عبء عمل. لتشغيل التحميل، سجل الدخول كأحد مستخدمي التحميل، ثم قم بتشغيل التحميل. يتم تشغيل التحميل مع فئة الموارد الخاصة بالمستخدم. هذه الطريقة أبسط من محاولة تغيير فئة الموارد الخاصة بالمستخدم لتناسب الحاجة الحالية لفئة الموارد.
إنشاء مستخدم محمل
هذا المثال ينشئ مستخدم تحميل مصنف إلى مجموعة عبء عمل محددة. الخطوة الأولى هي الاتصال بالماستر وإنشاء تسجيل دخول.
-- Connect to master
CREATE LOGIN loader WITH PASSWORD = 'a123STRONGpassword!';
اتصل بمجموعة SQL المخصصة وأنشئ مستخدما. الكود التالي يفترض أنك متصل بقاعدة البيانات المسماة mySampleDataWarehouse. يوضح كيفية إنشاء مستخدم يسمى loader ويمنح المستخدم صلاحيات لإنشاء الجداول والتحميل باستخدام عبارة COPY. ثم يصنف المستخدم إلى مجموعة عبء العمل DataLoads مع أقصى الموارد.
-- Connect to the dedicated SQL pool
CREATE USER loader FOR LOGIN loader;
GRANT ADMINISTER DATABASE BULK OPERATIONS TO loader;
GRANT INSERT ON <yourtablename> TO loader;
GRANT SELECT ON <yourtablename> TO loader;
GRANT CREATE TABLE TO loader;
GRANT ALTER ON SCHEMA::dbo TO loader;
CREATE WORKLOAD GROUP DataLoads
WITH (
MIN_PERCENTAGE_RESOURCE = 0
,CAP_PERCENTAGE_RESOURCE = 100
,REQUEST_MIN_RESOURCE_GRANT_PERCENT = 100
);
CREATE WORKLOAD CLASSIFIER [wgcELTLogin]
WITH (
WORKLOAD_GROUP = 'DataLoads'
,MEMBERNAME = 'loader'
);
هام
هذا مثال متطرف على تخصيص 100% موارد من تجمع SQL لتحميل واحد. هذا سيمنحك أقصى التزامن 1. كن على علم أن هذا يجب استخدامه فقط في الحمل الأولي حيث ستحتاج إلى إنشاء مجموعات عبء عمل أخرى بتكويناتها الخاصة لموازنة الموارد عبر أعباء العمل.
لتشغيل حمل يحتوي على موارد لمجموعة تحميل عبء العمل، سجل الدخول كمحمل وقم بتشغيل التحميل.
السماح لعدة مستخدمين بالتحميل
غالبا ما تكون هناك حاجة لتحميل عدة مستخدمين للبيانات إلى مستودع بيانات. يتطلب تحميل الجدول إنشاء كخيار (Transact-SQL) صلاحيات التحكم في قاعدة البيانات. يمنح إذن CONTROL التحكم الوصول إلى جميع المخططات. قد لا ترغب في أن يكون لجميع مستخدمي التحميل وصول للتحكم في جميع المخططات. لتقييد الأذونات، استخدم عبارة DENY CONTROL.
على سبيل المثال، انظر إلى مخططات قواعد البيانات، schema_A للقسم أ، و schema_B للقسم ب. دع مستخدمي قواعد البيانات user_A و user_B يكونون مستخدمين لتحميل PolyBase في القسمين A و B على التوالي. كلاهما حصل على صلاحيات قاعدة بيانات CONTROL. يقوم مبتكرو المخطط A و B الآن بتثبيت مخططاتهم باستخدام DENY:
DENY CONTROL ON SCHEMA :: schema_A TO user_B;
DENY CONTROL ON SCHEMA :: schema_B TO user_A;
User_A و user_B الآن مغلقون من مخطط القسم الآخر.
التحميل إلى طاولة التجهيز
لتحقيق أسرع سرعة تحميل لنقل البيانات إلى جدول مستودع البيانات، قم بتحميل البيانات في جدول المرحلة. حدد جدول المراحل ككومة واستخدم التدوير الدائري لخيار التوزيع.
ضع في اعتبارك أن التحميل عادة ما يكون عملية من خطوتين، حيث تقوم أولا بالتحميل إلى جدول المراحل ثم إدخال البيانات في جدول مستودع بيانات الإنتاج. إذا كان جدول الإنتاج يستخدم توزيع تجزئة، فقد يكون الوقت الكلي للتحميل والإدراج أسرع إذا قمت بتعريف جدول المراحل مع توزيع التجزئة. يستغرق تحميل الجدول إلى جدول المراحل وقتا أطول، لكن الخطوة الثانية بإدخال الصفوف في جدول الإنتاج لا تتطلب حركة بيانات عبر التوزيعات.
تحميل إلى فهرس مخزن الأعمدة
تتطلب مؤشرات Columnstore كميات كبيرة من الذاكرة لضغط البيانات إلى مجموعات صفوف عالية الجودة. للحصول على أفضل كفاءة ضغط ومؤشرة، يحتاج مؤشر مخزن الأعمدة إلى ضغط الحد الأقصى البالغ 1,048,576 صفا في كل مجموعة صف. عندما يكون هناك ضغط في الذاكرة، قد لا يتمكن مؤشر مخزن الأعمدة من تحقيق أقصى معدلات ضغط. هذا يؤثر على أداء الاستعلام. للبحث العميق، راجع تحسينات ذاكرة Columnstore.
- لضمان أن المستخدم المحمل لديه ذاكرة كافية لتحقيق أقصى معدلات ضغط، استخدم مستخدمي تحميل من فئة موارد متوسطة أو كبيرة.
- قم بتحميل عدد كاف من الصفوف لملء مجموعات صفوف جديدة بالكامل. خلال التحميل الجماعي، يتم ضغط كل 1,048,576 صفا مباشرة في مخزن الأعمدة كمجموعة صفوف كاملة. التحميلات التي تحتوي على أقل من 102,400 صف ترسل الصفوف إلى دلتاستور حيث تحتفظ الصفوف في مؤشر شجرة b. إذا قمت بتحميل عدد قليل جدا من الصفوف، قد تذهب جميعها إلى deltastore ولا يتم ضغطها فورا إلى صيغة columnstore.
زيادة حجم الدفعة عند استخدام واجهة برمجة تطبيقات SQLBulkCopy أو BCP
التحميل باستخدام عبارة COPY سيوفر أعلى معدل نقل مع مجموعات SQL مخصصة. إذا لم تستطع استخدام COPY للتحميل ويجب عليك استخدام واجهة برمجة تطبيقات SqLBulkCopy أو bcp، فعليك التفكير في زيادة حجم الدفعة لتحسين معدل النقل.
تلميح
حجم دفعة بين 100 كيلو إلى 1 مليون صف هو الخط الأساسي الموصى به لتحديد سعة حجم الدفعة المثالية.
إدارة فشل التحميل
يمكن أن يفشل التحميل باستخدام جدول خارجي مع الخطأ "تم إلغاء الاستعلام - تم الوصول إلى الحد الأقصى للرفض أثناء القراءة من مصدر خارجي". تشير هذه الرسالة إلى أن بياناتك الخارجية تحتوي على سجلات غير نظيفة. يعتبر سجل البيانات متسخا إذا لم تتطابق أنواع البيانات وعدد الأعمدة مع تعريفات الأعمدة في الجدول الخارجي، أو إذا لم تتوافق البيانات مع تنسيق الملف الخارجي المحدد.
لإصلاح السجلات المتسخة، تأكد من أن تعريفات الجدول الخارجي وتنسيقات الملفات الخارجية صحيحة وأن بياناتك الخارجية تتوافق مع هذه التعريفات. في حال كانت مجموعة فرعية من سجلات البيانات الخارجية متسخة، يمكنك اختيار رفض هذه السجلات لاستفساراتك باستخدام خيارات الرفض في 'إنشاء جدول خارجي' .
إدراج البيانات في جدول الإنتاج
قد يؤدي تحميل مرة واحدة إلى جدول صغير مع عبارة INSERT، أو حتى إعادة تحميل دورية لعملية بحث، بشكل جيد بما فيه الكفاية مع عبارة مثل INSERT INTO MyLookup VALUES (1, 'Type 1'). ومع ذلك، فإن الإدخالات المفردة ليست فعالة مثل تنفيذ الحمل الجماعي.
إذا كان لديك آلاف أو أكثر من الإدخالات الفردية خلال اليوم، قم بجمع الإدخالات لتتمكن من تحميلها بكميات كبيرة. طور عملياتك لإضافة الإدخالات الفردية إلى ملف، ثم أنشئ عملية أخرى تقوم بتحميل الملف بشكل دوري.
إنشاء إحصائيات بعد التحميل
لتحسين أداء الاستعلام، من المهم إنشاء إحصائيات على جميع أعمدة جميع الجداول بعد التحميل الأول، أو بعد حدوث تغييرات كبيرة في البيانات. يمكن تنفيذ إنشاء الإحصائيات يدويا أو يمكنك تفعيل إنشاء الإحصائيات تلقائيا.
لشرح مفصل للإحصاءات، راجع الإحصاء. يوضح المثال التالي كيفية إنشاء الإحصائيات يدويا على خمسة أعمدة من جدول Customer_Speed.
create statistics [SensorKey] on [Customer_Speed] ([SensorKey]);
create statistics [CustomerKey] on [Customer_Speed] ([CustomerKey]);
create statistics [GeographyKey] on [Customer_Speed] ([GeographyKey]);
create statistics [Speed] on [Customer_Speed] ([Speed]);
create statistics [YearMeasured] on [Customer_Speed] ([YearMeasured]);
تدوير مفاتيح التخزين
من الممارسات الأمنية الجيدة تغيير مفتاح الوصول إلى تخزين الكتلة بانتظام. لديك مفتاحان للتخزين لحساب التخزين الخاص بك، مما يتيح لك نقل المفاتيح.
لتدوير مفاتيح حساب تخزين Azure:
لكل حساب تخزين تغير مفتاحه (ALTER SCOPE CREDENTIAL).
مثال:
تم إنشاء المفتاح الأصلي
CREATE DATABASE SCOPED CREDENTIAL my_credential WITH IDENTITY = 'my_identity', SECRET = 'key1'
تدوير المفتاح من المفتاح 1 إلى المفتاح 2
ALTER DATABASE SCOPED CREDENTIAL my_credential WITH IDENTITY = 'my_identity', SECRET = 'key2'
لا حاجة لأي تغييرات أخرى على مصادر البيانات الخارجية الأساسية.
المحتوى ذو الصلة
- للتعرف أكثر على بوليبيس وتصميم عملية الاستخلاص والتحميل والتحويل (ELT)، راجع Design ELT ل Azure Synapse Analytics.
- لشرح التحميل، Use PolyBase لتحميل البيانات من تخزين Azure blob إلى Azure Synapse Analytics.
- لمراقبة أحمال البيانات، راجع مراقبة عبء العمل باستخدام إدارة المركبات (DMVs).