hibernateがDBへの書き込みを遅らせる可能性があるかどうかは疑問です。私は、MySQL用に構成された休止状態を持っています。シナリオ私は、80%の読み書きと20%の書き込みがサポートされることを願っています。だから私は自分の書き込みを最適化したくない、むしろ少し前に返すよりも、DBが書き込まれるまでクライアントを待ちます。私のテストでは現在100台のクライアントが並行していますが、CPUは時々最大限になります。すぐにDBに書き込んで、データが書き込まれたときにだけ戻るこのフラッシュメソッドが必要です。Hibernate Delayed Write
私のクライアント側では、書き込み要求とその後の読み取り要求を送信しますが、読み取り要求はnullを返すことがあります。私は、休止状態がすぐにDBに書き込まれていないと思われる。
public final ThreadLocal session = new ThreadLocal();
public Session currentSession() {
Session s = (Session) session.get();
// Open a new Session, if this thread has none yet
if (s == null || !s.isOpen()) {
s = sessionFactory.openSession();
// Store it in the ThreadLocal variable
session.set(s);
}
return s;
}
public synchronized void flush(Object dataStore) throws DidNotSaveRequestSomeRandomError {
Transaction txD;
Session session;
session = currentSession();
txD = session.beginTransaction();
session.save(dataStore);
try {
txD.commit();
} catch (ConstraintViolationException e) {
e.printStackTrace();
throw new DidNotSaveRequestSomeRandomError(dataStore, feedbackManager);
} catch (TransactionException e) {
log.debug("txD state isActive" + txD.isActive() + " txD is participating" + txD.isParticipating());
log.debug(e);
} finally {
// session.flush();
txD = null;
session.close();
}
// mySession.clear();
}
デバッグに少し時間がかかりました。 MySQLのログは素晴らしいです。これらは私のデバッグの結果です。もし私が – Siddharth