"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية دفق مجموعات نتائج MySQL كبيرة في الربيع لتجنب خطأ OutOfMemoryError؟

كيفية دفق مجموعات نتائج MySQL كبيرة في الربيع لتجنب خطأ OutOfMemoryError؟

تم النشر بتاريخ 2024-12-22
تصفح:167

How to Stream Large MySQL Result Sets in Spring to Avoid OutOfMemoryError?

دفق مجموعات كبيرة من النتائج باستخدام MySQL

عند التعامل مع جداول MySQL واسعة النطاق داخل تطبيق Spring، يمكن أن ينشأ OutOfMemoryException عندما يسعى السائق إلى تحميل الجدول بأكمله في الذاكرة. إعداد البيان.setFetchSize(Integer.MIN_VALUE); قد لا يكون كافيًا، لأن هذا يوفر فقط تلميحًا لبرنامج تشغيل JDBC.

لتمكين دفق مجموعات النتائج في برنامج تشغيل MySQL JDBC، يلزم اتباع نهج أكثر شمولاً:

  1. إنشاء مثيل بيان:

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
  2. تعيين الجلب الحجم:

    stmt.setFetchSize(Integer.MIN_VALUE)؛
    stmt.setFetchSize(Integer.MIN_VALUE);
التحذيرات:

هذه الطريقة لها بعض المزايا تحذيرات:

يجب قراءة جميع الصفوف في مجموعة النتائج (أو إغلاق مجموعة النتائج) قبل إصدار أي استعلامات أخرى على الاتصال. سيؤدي الفشل في القيام بذلك إلى حدوث استثناءات.
  • ضمن المعاملة، يتم تحرير الأقفال فقط بمجرد اكتمال المعاملة، مما يعني أن العبارة يجب أن تنتهي من التنفيذ أولاً.
  • إذا استمر خطأ OutOfMemoryError، فستكون المشكلة الأساسية قد تكمن في الاستخدام المفرط للذاكرة ضمن كود Java. وهذا يتطلب معالجة فورية للبيانات بدلاً من تخزينها.
رؤية إضافية:

لمزيد من الاستراتيجيات حول التعامل مع مجموعات النتائج الكبيرة، فكر في هذا السؤال ذي الصلة وإجابته: [رابط لسؤال مماثل].

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3