كيف تعرف/تسجيل ما إذا كانت ذاكرة التخزين المؤقت لـ Hibernate 2nd قد تم استخدامها أم لا للاستعلام؟

StackOverflow https://stackoverflow.com/questions/2351004

سؤال

حاليًا ، من أجل التحقق مما إذا كانت ذاكرة التخزين المؤقت لـ Hibernate 2nd تم استخدامها لاستعلام قاعدة البيانات ، أتحقق من سجل SQL الخاص بي (من خلال p6spy أو logSql = صحيح في datasource.groovy) لمعرفة ما إذا كان Grais/Hibernate قد أدى إلى استعداد SQL. وأفترض أنه إذا لم يتم تسجيل الاستعلام ، فقد يعني ذلك أنه تم استخدام ذاكرة التخزين المؤقت.

إنه معقد للغاية بالنسبة لمعلومات بسيطة ، أليس كذلك؟

هل تعرف طريقة بسيطة للحصول على المعلومات وتسجيلها: "تم استخدام ذاكرة التخزين المؤقت مقابل استعلام DB"؟

تعديل: بعد توصيات Pascal ، أضفت هذا trace 'org.hibernate.cache' إلى تكوين log4j الخاص بي.

هل كانت مفيدة؟

المحلول

يمكنك تفعيل org.hibernate.cache الفئة لتسجيل جميع نشاط ذاكرة التخزين المؤقت من المستوى الثاني. للقيام بذلك (وفقا للكأس التعليمات) ، تحرير الخاص بك Config.groovy ملف. ابحث عن الخط مع:

hibernate = "off"

واستبدله بـ:

hibernate.cache = "trace,stdout"

نصائح أخرى

الإجابة المختصرة هي أنه عند تمكين تسجيل الاستعلام ، يتم تسجيل كل استعلام.

تتوفر إحصائيات مختلفة عبر SessionFactory.getStatistics() و Session.getStatistics(). لا تتوفر تنفيذ الاستعلام و Cache Cache Hit و Miss Counts في SessionStatistics.

في بيئة اختبار ، حيث ليس لديك جلسات متزامنة ، يمكنك إجراء استعلامك القابل للتخزين المؤقت مرتين وتأكيد أن كلاهما SessionStatistics.getQueryCacheHitCount() و SessionStatistics.getQueryExecutionCount() زادت فقط من 1.

ال السبات البارفيلر يقدم كل هذه الإحصائيات والسجلات بشكل أكثر فعالية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top