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

أكثر استعلامات BigQuery تكراراً

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

لماذا يهم هذا

استعلام يكلّف 0.10 دولار لكل تنفيذ لكنه يُشغَّل 10,000 مرة شهرياً يكلّف 1,000 دولار. كثيراً ما يكشف تحليل التكرار عن استعلامات منخفضة التكلفة تتراكم لتُشكّل إنفاقاً كبيراً بسبب التكرار المجرّد. هذه مرشحة رئيسية للتخزين المؤقت أو التحقيق المجدول أو تسريع BI Engine.

كيف يعمل

يجمّع الاستعلام كل نص استعلام فريد ثم يحسب التكرارات ويجمع total_bytes_billed لكل مجموعة. تُظهر النتيجة كل استعلام فريد مع عدد تنفيذاته وتكلفته عند الطلب التراكمية.

استعلام SQL

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

SQL
-- Find the most frequently repeated queries and their cumulative cost

DECLARE lookback_days INT64 DEFAULT 14;

WITH jobs AS (
  SELECT
    query,
    COALESCE(total_bytes_billed, 0) AS bytes_billed,
    ROW_NUMBER() OVER (PARTITION BY job_id ORDER BY end_time DESC) AS rn
  FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
  WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
    AND job_type = 'QUERY' AND state = 'DONE' AND total_slot_ms IS NOT NULL
),
deduplicated AS (
  SELECT query, bytes_billed FROM jobs WHERE rn = 1
),
grouped AS (
  SELECT
    query,
    COUNT(*) AS exec_count,
    SUM(bytes_billed) AS total_bytes
  FROM deduplicated
  GROUP BY query
)
SELECT
  query,
  exec_count,
  ROUND(total_bytes / POW(1024, 3), 2) AS total_gib_scanned,
  ROUND(total_bytes / POW(1024, 4) * 6.25, 2) AS cumulative_cost_usd
FROM grouped
...
استبدل your-project وregion-us بمشروع GCP الخاص بك ومنطقة مجموعة البيانات.

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

تُزال التكرارات من المهام أولاً بـ job_id، ثم تُجمَّع حسب نص الاستعلام. يعطي العدد تكرار التنفيذ وجمع البايتات المفوترة يعطي التكلفة التراكمية. يكشف هذا النهج بفعالية الاستعلامات التي تُشغَّل مراراً على نطاق واسع.

رؤى أساسية

  • lightbulb

    الاستعلامات التي تُشغَّل >100 مرة يومياً هي بالتأكيد آلية — تحقق مما إذا كان بإمكانها استخدام نتائج مخزّنة مؤقتاً.

  • lightbulb

    يخزّن BigQuery النتائج مؤقتاً بشكل افتراضي لمدة 24 ساعة، لكن فقط للاستعلامات المتطابقة ذات النتائج الحتمية.

  • lightbulb

    الاستعلامات التي تحتوي على CURRENT_TIMESTAMP() أو NOW() تتجاوز ذاكرة التخزين المؤقت — فكّر في استخدام اقتطاع التاريخ بدلاً منها.

  • lightbulb

    الاستعلامات عالية التكرار التي تمسح الجداول ذاتها قد تستفيد من طرق العرض المادية أو BI Engine.

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

  1. 1

    مكّن تخزين نتائج BigQuery مؤقتاً وتجنّب الأنماط التي تبطله (CURRENT_TIMESTAMP وRAND وغيرها).

  2. 2

    أنشئ طرق عرض مادية لأعلى 5 استعلامات تحليلية يُنفَّذ بها بشكل متكرر.

  3. 3

    ادمج الاستعلامات المكررة من لوحات تحكّم أو خدمات مختلفة في استعلام مجدول واحد.

  4. 4

    استخدم BI Engine للاستعلامات الأقل من ثانية التي تزوّد لوحات التحكّم التفاعلية.

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

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

أدلة ذات صلة