كيف تجعل PostgreSQL بطيئًا بشكلٍ سخيف؟

2025-07-28
كيف تجعل PostgreSQL بطيئًا بشكلٍ سخيف؟

تتحدى هذه المقالة القارئ لجعل PostgreSQL بطيئًا قدر الإمكان من خلال تعديل المعلمات في ملف `postgresql.conf`، دون اللجوء إلى خنق وحدة المعالجة المركزية أو حذف الفهارس. من خلال سلسلة من التعديلات المختارة بعناية، بما في ذلك تقليل حجم ذاكرة التخزين المؤقت بشكل كبير (`shared_buffers`)، وتشغيل autovacuum والتحليل بشكل عدواني (`autovacuum_*` parameters)، وتكوين WAL (`wal_*` parameters) للحصول على أقصى حد من تردد الكتابة ومنافسة I/O، يتمكن الكاتب من تقليل TPS لـ PostgreSQL بأكثر من 7000 مرة، من 7000+ إلى أقل من رقم واحد، حتى أقل من 0.1 TPS. يفصل الكاتب المنطق وتأثير كل تغيير في المعلمة ويوفر تكوينًا قابلًا للتكرار. هذه تجربة رائعة تُظهر التأثير العميق لضبط معلمات قاعدة البيانات.

اقرأ المزيد
التطوير ضبط المعلمات

قياس أداء جافا سكريبت: فوضى من مُجمّعات JIT، واختلافات المحرّكات، وعدم دقة التوقيت

2024-12-24
قياس أداء جافا سكريبت: فوضى من مُجمّعات JIT، واختلافات المحرّكات، وعدم دقة التوقيت

يُعَدّ قياس أداء جافا سكريبت أمرًا صعبًا للغاية. تُبرز هذه المقالة التحديات التي تواجه هذا الأمر: تؤدي عمليات التحسين الديناميكية لـ JIT Compiler إلى نتائج متفاوتة بشكل كبير بين عمليات التشغيل؛ وتُظهر محركات جافا سكريبت المختلفة (مثل V8 و JavaScriptCore) اختلافات كبيرة في الأداء، حيث يُظهر نفس الكود أداءً مختلفًا بشكل كبير؛ وتُقلل المتصفحات عمدًا من دقة التوقيت للحد من هجمات التوقيت، مما يجعل القياسات الدقيقة أمرًا صعبًا. يقترح الكاتب استخدام أدوات مثل d8 على جانب الخادم لتحقيق قدر أكبر من التحكم في مستويات التحسين وإدارة الذاكرة، بينما تعتمد اختبارات جانب العميل بشكل كبير على المعلومات المحدودة التي توفرها أدوات المُطور. باختصار، يتطلب قياس أداء جافا سكريبت مراعاة دقيقة لعمليات JIT Compiler، واختلافات المحركات، ودقة التوقيت، مما يجعله أكثر تعقيدًا بكثير من اللغات الأخرى.

اقرأ المزيد