Get a free observability report to evaluate the potential savingsContact us →
تحليل التكاليف3 دقيقة قراءة

تحليل تكاليف BigQuery حسب الاستعلام

يمنحك هذا الاستعلام رؤية سطراً بسطر لكل تنفيذ استعلام في مشروعك، بما في ذلك تكلفته عند الطلب واستخدام الفتحات ومدة الفوترة. هذا هو أكثر استعلامات تحليل التكاليف تفصيلاً — مثالي للتعمق في الاستعلامات الباهظة الثمن بشكل فردي.

لماذا يهم هذا

تُخبرك عروض التكاليف المجمّعة (حسب المستخدم أو التسمية) على مستوى عالٍ أين يذهب المال، لكن لحل المشكلة فعلياً تحتاج إلى رؤية الاستعلامات الفردية. يتيح لك هذا التفصيل حسب الاستعلام تحديد عبارات SQL المحددة التي تستهلك أكثر الموارد وتحديد أولويات التحسينات ذات أعلى عائد على الاستثمار.

كيف يعمل

يقرأ الاستعلام من INFORMATION_SCHEMA.JOBS_BY_PROJECT ويحسب عدة مقاييس تكلفة لكل تنفيذ استعلام: العدد التقريبي للفتحات والتكلفة عند الطلب (بناءً على البايتات المفوترة) وساعات الفتحات المفوترة (لمقارنة Editions) وعدد التنفيذات. كما يطبّق قواعد الحدّ الأدنى لفوترة BigQuery — حدّ أدنى 10 MiB لكل استعلام ومدة دقيقة واحدة على الأقل لـ Editions.

استعلام SQL

Fill in your details to get a ready-to-run query:

SQL
-- Per-query cost breakdown with slot and duration metrics

DECLARE lookback_days INT64 DEFAULT 7;

WITH base_jobs AS (
  SELECT
    project_id,
    query,
    start_time,
    end_time,
    COALESCE(total_bytes_billed, 0) AS bytes_billed,
    total_slot_ms,
    TIMESTAMP_DIFF(end_time, start_time, MILLISECOND) AS duration_ms,
    ROUND(SAFE_DIVIDE(total_slot_ms,
      TIMESTAMP_DIFF(end_time, start_time, MILLISECOND)), 2) AS avg_slots
  FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
  WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
    AND state = 'DONE' AND total_slot_ms IS NOT NULL
),
with_billing AS (
  SELECT *,
    CEIL(avg_slots / 100) * 100 AS billed_slots,
    GREATEST(duration_ms, 60000) / 3.6e6 AS billed_hours,
    GREATEST(bytes_billed, 10 * POW(1024, 2)) AS billed_bytes
  FROM base_jobs
),
freq AS (
  SELECT query, COUNT(*) AS exec_count FROM base_jobs GROUP BY query
)
SELECT
...
استبدل your-project وregion-us بمشروع GCP الخاص بك ومنطقة مجموعة البيانات.

شرح الاستعلام

يحسب الاستعلام العدد التقريبي للفتحات بقسمة total_slot_ms على وقت التنفيذ. يطبّق قواعد الحدّ الأدنى لفوترة BigQuery: حدّ أدنى 10 MiB من البايتات ومدة دقيقة واحدة على الأقل. يُقرَّب عدد الفتحات إلى أقرب 100 (يطابق زيادات المقياس التلقائي). تُحسب التكلفة عند الطلب بـ 6.25 دولار/TiB، وتُحسب ساعات الفتحات لمقارنة تكلفة Editions.

رؤى أساسية

  • lightbulb

    الاستعلامات ذات التكلفة العالية عند الطلب لكن الفتحات القليلة تمسح الكثير من البيانات — تحتاج إلى مرشّحات قسم أو تشذيب أعمدة.

  • lightbulb

    الاستعلامات ذات ساعات الفتحات العالية لكن البايتات المفوترة المنخفضة مكلفة حسابياً — ابحث عن JOINs المعقدة أو DISTINCT أو وظائف النافذة.

  • lightbulb

    الاستعلامات ذات عدد التنفيذات العالي هي مرشحة لتخزين النتائج المؤقت أو طرق العرض المادية.

  • lightbulb

    قارن on_demand_cost_usd مع slot_hours لتحديد نموذج الفوترة الأرخص لكل استعلام.

أفضل الممارسات

  1. 1

    ركّز جهد التحسين على أعلى 10 استعلامات من حيث التكلفة — فهي تمثّل عادةً 60-80% من إجمالي الإنفاق.

  2. 2

    للاستعلامات المتكررة التنفيذ، فكّر في تحقيق النتائج أو استخدام BI Engine.

  3. 3

    استخدم EXPLAIN لفهم خطة تنفيذ الاستعلام قبل التحسين وبعده.

  4. 4

    اضبط تنبيهات تلقائية للاستعلامات التي تتجاوز عتبة التكلفة.

هل تريد من CloudClerk إيجاد هذه الوفورات تلقائياً؟

تتصل منصتنا بمشروع BigQuery الخاص بك وتُشغّل هذه التحليلات تلقائياً وتقدّم توصيات التحسين المدعومة بالذكاء الاصطناعي — مع إخفاء هوية بياناتك بالكامل.

أدلة ذات صلة