مشاركة عبر


تعرف على تجمع SQL بدون خادم في Azure Synapse Analytics

توضح هذه المقالة كيف يمكنك تقدير التكاليف وإدارتها لتجمع SQL بلا خادم في Azure Synapse Analytics:

  • يمكنك تقدير كمية البيانات التي تمت معالجتها قبل إصدار استعلام
  • استخدم ميزة التحكم في التكلفة لتعيين الموازنة

فهم أن تكاليف تجمع SQL بدون خادم في Azure Synapse Analytics ليست سوى جزء من التكاليف الشهرية في فاتورة Azure. إذا كنت تستخدم خدمات Azure الأخرى، تتم محاسبتك على جميع خدمات وموارد Azure المستخدمة في اشتراك Azure، بما في ذلك خدمات الجهات الخارجية. توضح هذه المقالة كيف يمكنك تقدير التكاليف وإدارتها لتجمع SQL بلا خادم في Azure Synapse Analytics.

البيانات التي تمت معالجتها

البيانات التي تتم معالجتها هي كمية البيانات التي يخزنها النظام مؤقتاً أثناء تشغيل الاستعلام. تتكون البيانات المعالجة من الكميات التالية:

  • مقدار البيانات المقروءة من التخزين. يتضمن هذا المقدار ما يلي:
    • تمت قراءة البيانات أثناء قراءة البيانات.
    • تمت قراءة البيانات أثناء قراءة بيانات التعريف (لتنسيقات الملفات التي تحتوي على بيانات تعريف، مثل Parquet).
  • كمية البيانات في النتائج المتوسطة. يتم نقل هذه البيانات بين العقد أثناء تشغيل الاستعلام. يتضمن نقل البيانات إلى نقطة النهاية الخاصة بك، بتنسيق غير مضغوط.
  • كمية البيانات المكتوبة إلى التخزين. إذا كنت تستخدم CETAS لتصدير مجموعة النتائج إلى التخزين، فستتم إضافة كمية البيانات المكتوبة إلى كمية البيانات التي تمت معالجتها لجزء SELECT من CETAS.

قراءة الملفات من التخزين محسنة للغاية. تستخدم العملية:

  • الإحضار المسبق، والذي قد يضيف بعض النفقات العامة إلى كمية البيانات المقروءة. إذا كان الاستعلام يقرأ ملفاً كاملاً، فلن يكون هناك حمل إضافي. إذا تم قراءة ملف جزئياً، كما هو الحال في استعلامات TOP N، فسيتم قراءة المزيد من البيانات باستخدام الإحضار المسبق.
  • محلل قيم محسنة مفصولة بفواصل (CSV). إذا كنت تستخدم PARSER_VERSION='2.0' لقراءة ملفات CSV، فستزيد كميات البيانات المقروءة من التخزين قليلاً. يقرأ محلل CSV المحسن الملفات بالتوازي، في مجموعات متساوية الحجم. لا تحتوي المجموعات بالضرورة على صفوف كاملة. لضمان تحليل جميع الصفوف، يقرأ محلل CSV المحسن أيضاً أجزاء صغيرة من القطع المجاورة. تضيف هذه العملية كمية صغيرة من النفقات العامة.

الإحصائيات‬

يعتمد محسن استعلام تجمع SQL بلا خادم على الإحصائيات لإنشاء خطط تنفيذ الاستعلام الأمثل. يمكنك إنشاء الإحصائيات يدوياً. وإلا، يقوم تجمع SQL بلا خادم بإنشائها تلقائياً. وفي كلتا الحالتين، يتم إنشاء الإحصائيات عن طريق تشغيل استعلام منفصل يرجع عموداً معيناً بمعدل عينة تم توفيره. يحتوي هذا الاستعلام على كمية مقترنة من البيانات التي تمت معالجتها.

إذا قمت بتشغيل نفس الاستعلام أو أي استعلام آخر قد يستفيد من الإحصائيات التي تم إنشاؤها، فستتم إعادة استخدام الإحصائيات إذا كان ذلك ممكنا. لا توجد بيانات إضافية تتم معالجتها لإنشاء الإحصائيات.

عند إنشاء إحصائيات لعمود Parquet، تتم قراءة العمود ذي الصلة فقط من الملفات. عند إنشاء إحصائيات لعمود CSV، تتم قراءة الملفات بالكامل وتحليلها.

التقريب

يتم تقريب كمية البيانات التي تمت معالجتها إلى أقرب ميجابايت لكل استعلام. يحتوي كل استعلام على 10 ميجابايت كحد أدنى من البيانات التي تمت معالجتها.

البيانات التي تمت معالجتها لا تتضمن

  • بيانات التعريف على مستوى الخادم (مثل عمليات تسجيل الدخول والأدوار وبيانات الاعتماد على مستوى الخادم).
  • قواعد البيانات التي تقوم بإنشائها في نقطة النهاية. تحتوي قواعد البيانات هذه على بيانات تعريف فقط (مثل المستخدمين والأدوار والمخططات وطرق العرض والوظائف المضمنة ذات القيمة الجدولية [TVFs]والإجراءات المخزنة وبيانات الاعتماد ذات نطاق قاعدة البيانات ومصادر البيانات الخارجية وتنسيقات الملفات الخارجية والجداول الخارجية).
    • إذا كنت تستخدم استنتاج المخطط، فستتم قراءة أجزاء الملفات لاستنتاج أسماء الأعمدة وأنواع البيانات، وتتم إضافة مقدار قراءة البيانات إلى كمية البيانات التي تتم معالجتها.
  • عبارات لغة تعريف البيانات (DDL)، باستثناء عبارة CREATE STATISTICS لأنها تعالج البيانات من التخزين استناداً إلى النسبة المئوية للعينة المحددة.
  • استعلامات بيانات التعريف فقط.

تقليل كمية البيانات التي تمت معالجتها

يمكنك تحسين كمية البيانات التي تتم معالجتها لكل استعلام وتحسين الأداء عن طريق تقسيم بياناتك وتحويلها إلى تنسيق مضغوط يستند إلى عمود مثل Parquet.

أمثلة

تخيل ثلاثة جداول.

  • يتم دعم الجدول population_csv بـ 5 تيرابايت من ملفات CSV. يتم تنظيم الملفات في خمسة أعمدة متساوية الحجم.
  • يحتوي الجدول population_parquet على نفس بيانات الجدول population_csv. مدعوم بـ 1 تيرابايت من ملفات Parquet. هذا الجدول أصغر من الجدول السابق لأن البيانات مضغوطة بتنسيق Parquet.
  • يتم دعم جدول very_small_csv بواسطة 100 كيلوبايت من ملفات CSV.

الاستعلام 1: SELECT SUM(population) FROM population_csv

يقرأ هذا الاستعلام الملفات بأكملها ويوزعها للحصول على قيم لعمود المحتوى. تعالج العقد أجزاء من هذا الجدول، ويتم نقل مجموع المحتوى لكل جزء بين العقد. يتم نقل المجموع النهائي إلى نقطة النهاية الخاصة بك.

يعالج هذا الاستعلام 5 تيرابايت من البيانات بالإضافة إلى مقدار صغير من النفقات العامة لنقل مبالغ الأجزاء.

الاستعلام 2: SELECT SUM(population) FROM population_parquet

عند الاستعلام عن التنسيقات المضغوطة والمستندة إلى الأعمدة مثل Parquet، تتم قراءة بيانات أقل فيها من الاستعلام 1. ترى هذه النتيجة لأن تجمع SQL بلا خادم يقرأ عموداً مضغوطاً واحداً بدلاً من الملف بأكمله. في هذه الحالة، تتم قراءة 0.2 تيرابايت. (خمسة أعمدة متساوية الحجم هي 0.2 تيرابايت لكل منها.) تعالج العقد أجزاء من هذا الجدول، ويتم نقل مجموع المحتوى لكل جزء بين العقد. يتم نقل المجموع النهائي إلى نقطة النهاية الخاصة بك.

يعالج هذا الاستعلام 0.2 تيرابايت من البيانات بالإضافة إلى مقدار صغير من النفقات العامة لنقل مبالغ الأجزاء.

الاستعلام 3: SELECT * FROM population_parquet

يقرأ هذا الاستعلام جميع الأعمدة وينقل جميع البيانات بتنسيق غير مضغوط. إذا كان تنسيق الضغط هو 5:1، فإن الاستعلام يعالج 6 تيرابايت لأنه يقرأ 1 تيرابايت وينقل 5 تيرابايت من البيانات غير المضغوطة.

الاستعلام 4: SELECT COUNT(*) FROM very_small_csv

يقرأ هذا الاستعلام الملفات بالكامل. الحجم الإجمالي للملفات في التخزين لهذا الجدول هو 100 كيلوبايت. تعالج العقد أجزاء من هذا الجدول، ويتم نقل مجموع المحتوى لكل جزء بين العقد. يتم نقل المجموع النهائي إلى نقطة النهاية الخاصة بك.

يعالج هذا الاستعلام أكثر قليلاً من 100 كيلوبايت من البيانات. يتم تقريب كمية البيانات التي تمت معالجتها لهذا الاستعلام إلى 10 ميجابايت، كما هو محدد في قسم التقريب من هذه المقالة.

عنصر التحكم بالتكلفة

تمكنك ميزة التحكم في التكلفة في تجمع SQL بلا خادم من تعيين ميزانية كمية البيانات التي تمت معالجتها. يمكنك تعيين الميزانية بالتيرابايت للبيانات التي تمت معالجتها ليوم وأسبوع وشهر. في الوقت نفسه، يمكنك الحصول على مجموعة ميزانيات واحدة أو أكثر. لتكوين التحكم في التكلفة لتجمع SQL بلا خادم، يمكنك استخدام Synapse Studio أو T-SQL.

تكوين التحكم في التكلفة لتجمع SQL بلا خادم في Synapse Studio

لتكوين التحكم في التكلفة لتجمع SQL بلا خادم في Synapse Studio، انتقل إلى إدارة العنصر في القائمة على اليسار، من تحديد عنصر تجمع SQL ضمن تجمعات التحليلات. أثناء المرور فوق تجمع SQL بلا خادم، ستلاحظ أيقونة للتحكم في التكلفة - انقر فوق هذه الأيقونة.

التنقل في التحكم في التكاليف

بمجرد النقر فوق أيقونة التحكم في التكلفة، سيظهر شريط جانبي:

تكوين التحكم في التكلفة

لتعيين ميزانية واحدة أو أكثر، انقر أولاً على زر الاختيار تمكين للميزانية التي تريد تعيينها، بدلاً من إدخال قيمة العدد الصحيح في مربع النص. وحدة القيمة هي TBs. بمجرد تكوين الميزانيات التي تريدها، انقر فوق الزر تطبيق في أسفل الشريط الجانبي. هذا كل شيء، لقد تم تعيين الميزانية الآن.

تكوين التحكم في التكلفة لتجمع SQL بلا خادم في T-SQL

لتكوين التحكم في التكلفة لتجمع SQL بلا خادم في T-SQL، تحتاج إلى تنفيذ إجراء واحد أو أكثر من الإجراءات المخزنة التالية.

sp_set_data_processed_limit
	@type = N'daily',
	@limit_tb = 1

sp_set_data_processed_limit
	@type= N'weekly',
	@limit_tb = 2

sp_set_data_processed_limit
	@type= N'monthly',
	@limit_tb = 3334

لمشاهدة التكوين الحالي نفذ عبارة T-SQL التالية:

SELECT * FROM sys.configurations
WHERE name like 'Data processed %';

لمعرفة مقدار البيانات التي تمت معالجتها خلال اليوم أو الأسبوع أو الشهر الحالي، قم بتنفيذ عبارة T-SQL التالية:

SELECT * FROM sys.dm_external_data_processed

تجاوز الحدود المحددة في عنصر التحكم في التكلفة

في حالة تجاوز أي حد أثناء تنفيذ الاستعلام، لن يتم إنهاء الاستعلام.

عند تجاوز الحد، سيتم رفض استعلام جديد مع رسالة الخطأ التي تحتوي على تفاصيل تتعلق بالفترة والحد المحدد لتلك الفترة والبيانات التي تمت معالجتها لتلك الفترة. على سبيل المثال، في حالة تنفيذ استعلام جديد، حيث يتم تعيين الحد الأسبوعي إلى 1 تيرابايت وتم تجاوزه، ستكون رسالة الخطأ:

Query is rejected because SQL Serverless budget limit for a period is exceeded. (Period = Weekly: Limit = 1 TB, Data processed = 1 TB))

الخطوات التالية

لمعرفة كيفية تحسين استعلاماتك للأداء، راجع أفضل الممارسات لتجمع SQL بلا خادم.