المهارات postgres-best-practices
📦

postgres-best-practices

آمن

تحسين استعلامات PostgreSQL والمخططات

هل تعاني من استعلامات قاعدة البيانات البطيئة والأداء الضعيف؟ تقدم هذه المهارة قواعد تحسين PostgreSQL المجربة من Supabase مع أمثلة SQL ملموسة وتحسينات أداء قابلة للقياس.

يدعم: Claude Codex Code(CC)
📊 71 كافٍ
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "postgres-best-practices". هذا الاستعلام يستغرق 5 ثوانٍ على 100 ألف صف: SELECT * FROM orders WHERE customer_id = 42 AND status = 'pending'

النتيجة المتوقعة:

أنشئ فهرسًا مركبًا: CREATE INDEX idx_orders_customer_status ON orders (customer_id, status). هذا يغير خطة التنفيذ من المسح المتسلسل إلى مسح الفهرس، مما يقلل وقت الاستعلام إلى أقل من 10 ميلي ثانية. ترتيب الأعمدة مهم: ضع فلتر المساواة (customer_id) قبل فلتر الحالة للاستخدام الأمثل للفهرس.

استخدام "postgres-best-practices". كيف أمنع استعلامات N+1 عند جلب المستخدمين مع بيانات ملفاتهم الشخصية؟

النتيجة المتوقعة:

استبدل الاستعلامات الفردية بـ JOIN: SELECT u.*, p.bio, p.avatar_url FROM users u LEFT JOIN user_profiles p ON p.user_id = u.id. أضف فهرسًا على user_profiles(user_id) للبحث السريع. هذا يقلل 101 استعلام (1 للمستخدمين + 100 للملفات الشخصية) إلى استعلام واحد.

التدقيق الأمني

آمن
v1 • 2/24/2026

This skill contains educational documentation for PostgreSQL best practices from Supabase. All 711 static analysis findings are false positives: the 'external_commands' detections are SQL code blocks in markdown documentation (not shell commands), 'network' URLs are reference links to postgresql.org and supabase.com, 'scripts' findings are SQL WITH clauses (CTEs), and 'crypto' warnings are text pattern matches in documentation. No executable code or security risks present.

37
الملفات التي تم فحصها
3,490
الأسطر التي تم تحليلها
0
النتائج
1
إجمالي عمليات التدقيق
لا توجد مشكلات أمنية
تم تدقيقه بواسطة: claude

درجة الجودة

38
الهندسة المعمارية
100
قابلية الصيانة
87
المحتوى
32
المجتمع
100
الأمان
91
الامتثال للمواصفات

ماذا يمكنك بناءه

مطور الواجهة الخلفية يحسن الاستعلامات البطيئة

تحديد الفهارس المفقودة، وإصلاح أنماط N+1، وتطبيق تقنيات تحسين الاستعلام لتقليل أوقات الاستجابة من ثوانٍ إلى ميلي ثوانٍ.

مهندس قواعد البيانات يصمم مخططات جديدة

تطبيق أفضل الممارسات لأنواع البيانات والقيود والمفاتيح الخارجية واستراتيجيات الفهرسة أثناء تصميم المخطط الأولي.

مهندس DevOps يضبط قواعد بيانات الإنتاج

تكوين حدود الاتصالات وإعدادات الفراغ والمراقبة للحفاظ على صحة قاعدة البيانات تحت الحمل.

جرّب هذه الموجهات

تحسين الاستعلام الأساسي
راجع استعلام PostgreSQL هذا بحثًا عن مشكلات الأداء واقترح تحسينات: [الصق الاستعلام]
توصية بالفهرس
حلل مخطط الجدول هذا وحمل عمل الاستعلام. ما الفهارس التي يجب إنشاؤها للحصول على الأداء الأمثل؟ المخطط: [الصق المخطط]، الاستعلامات: [الصق الاستعلامات]
إصلاح استعلام N+1
أقوم بجلب المستخدمين وطلباتهم باستعلامات منفصلة. أرني كيفية إعادة كتابة هذا كـ JOIN واحد فعال مع الفهرسة المناسبة.
سياسة الأمان على مستوى الصف
أنشئ سياسة أمان على مستوى الصف لـ SaaS متعدد المستأجرين حيث يمكن للمستخدمين الوصول فقط إلى البيانات التابعة لمؤسستهم. هيكل الجدول: [الصق المخطط]

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

  • أضف دائمًا فهارس على أعمدة WHERE و JOIN و ORDER BY
  • استخدم EXPLAIN ANALYZE للتحقق من خطط تنفيذ الاستعلام قبل النشر
  • طبق تجميع الاتصالات لمنع استنزاف قاعدة البيانات

تجنب

  • تشغيل استعلامات غير مفهرسة على جداول كبيرة مما يسبب مسحًا متسلسلاً
  • جلب جميع الأعمدة باستخدام SELECT * بدلاً من حقول محددة
  • استخدام LIKE مع أحرف بدل في البداية مما يمنع استخدام الفهرس

الأسئلة المتكررة

كيف أعرف الأعمدة التي تحتاج إلى فهارس؟
افهرس الأعمدة المستخدمة في بنود WHERE وشروط JOIN و ORDER BY والمفاتيح الخارجية. استخدم pg_stat_user_tables لتحديد الأعمدة التي يتم الوصول إليها بشكل متكرر بدون فهارس.
ما هو N+1 وكيف أصلحه؟
يحدث N+1 عندما تجلب سجلًا أصليًا ثم تجري N استعلام إضافي لسجلات فرعية. أصلح ذلك باستخدام JOINs أو تحميل مجمّع مع بنود IN لجلب جميع السجلات الفرعية في استعلام واحد.
متى يجب استخدام الفهارس الجزئية؟
استخدم الفهارس الجزئية عندما تقوم الاستعلامات بالتصفية بشكل متكرر على شرط معين (مثل WHERE status='active'). هذا ينشئ فهارس أصغر وأسرع تغطي فقط الصفوف ذات الصلة.
كيف يعمل الأمان على مستوى الصف؟
يفرض RLS سياسات الوصول على مستوى قاعدة البيانات. مكنه باستخدام ALTER TABLE ... ENABLE ROW LEVEL SECURITY، ثم أنشئ سياسات تصفي الصفوف بناءً على سمات المستخدم مثل organization_id.
ما حجم تجمع الاتصالات الذي يجب استخدامه؟
ابدأ بـ 10-20 اتصال لكل مثيل تطبيق. راقب pg_stat_activity واضبط بناءً على: (عدد نوى المعالج * 2) + effective_spindle_count لأحمال العمل المعتمدة على المعالج.
لماذا استعلاماتي بطيئة بعد إضافة الفهارس؟
الأسباب المحتملة: ترتيب خاطئ للأعمدة في الفهارس المركبة، استخدام دوال على أعمدة مفهرسة، إحصائيات قديمة (شغّل ANALYZE)، أو فهارس على أعمدة منخفضة التمايز. استخدم EXPLAIN ANALYZE للتشخيص.