إدارة التكلفة لتجمع 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 بلا خادم، ستلاحظ أيقونة للتحكم في التكلفة - انقر فوق هذه الأيقونة.

Cost control navigation

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

Cost control configuration

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

تكوين التحكم في التكلفة لتجمع 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 بلا خادم.