في تطبيقي (React Spring Boot Oracle)، أدى التعامل مع مجموعات البيانات الكبيرة إلى بطء وقت المعالجة بشكل محبط. كنت بحاجة إلى حل لتسريع الأداء دون المساس بالدقة أو الاكتمال.
NTILE هي وظيفة نافذة SQL قوية مصممة لتقسيم مجموعة النتائج إلى عدد محدد من القطع ذات الحجم المتساوي تقريبًا، والمعروفة باسم "البلاطات". يتم تعيين رقم قسم لكل صف بناءً على موضعه في المجموعة المرتبة.
باستخدام NTILE، قمت بتقسيم نتائج الاستعلام إلى أجزاء يمكن التحكم فيها ومعالجة هذه الأقسام بالتوازي. وقد سمح لي هذا الأسلوب بجلب البيانات والتعامل معها في وقت واحد، مما أدى إلى تقليل أوقات الانتظار بشكل كبير.
إليك مثال عملي لكيفية تنفيذ ذلك:
WITH PartitionedSales AS ( SELECT sales_id, sales_amount, sales_date, NTILE(2) OVER (ORDER BY sales_id) AS partition_number -- Assigns a partition number (1 or 2) to each row FROM sales WHERE sales_date BETWEEN '2023-01-01' AND '2023-12-31' ) SELECT * FROM PartitionedSales WHERE partition_number = :partitionNumber -- Replace :partitionNumber with the actual partition number (1 or 2)
في مقتطف SQL أعلاه:
على الواجهة الأمامية، يمكنك استخدام المعالجة المتوازية لجلب كل قسم بكفاءة:
async function fetchPartition(partitionNumber) { const response = await fetch('/api/sales?partition=' partitionNumber}); return response.json(); } async function fetchData() { try { const [partition1, partition2] = await Promise.all([ fetchPartition(1), // Fetch the first partition fetchPartition(2) // Fetch the second partition ]); // Combine and process results const combinedResults = [...partition1, ...partition2]; processResults(combinedResults); } catch (error) { console.error('Error fetching data:', error); } }
في هذا الكود:
إذا كنت تتطلع إلى تعزيز الأداء في تطبيقاتك كثيفة البيانات، فجرّب هذه الطريقة. إنها طريقة ذكية وفعالة لجعل استفساراتك تعمل بشكل أكثر جدية، وليس لفترة أطول.
عند التعامل مع الطلبات المتزامنة، يمكن أن يصبح الطلب على اتصالات قاعدة البيانات كبيرًا. قد يؤدي هذا الاستخدام المكثف للاتصالات إلى إجهاد قاعدة البيانات الخاصة بك، مما قد يؤدي إلى اختناقات في الأداء. من الضروري مراقبة وإدارة عدد الطلبات المتزامنة للتأكد من أن قاعدة البيانات الخاصة بك تظل سريعة الاستجابة وتعمل بكفاءة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3