如果你有一个只读的数据库事务,你是提交(commit)还是回滚(rollback)?是否有任何原因去做其中之一?这两种方法中是否有一种能够提高数据库性能?
一些关系型数据库管理系统(至少包括Oracle)具有只读隔离级别。否则,我更喜欢使用回滚(ROLLBACK)
,因为它不会在事务日志中创建条目(从性能角度来看稍微好一些)。
更新
一些解释。
大多数关系型数据库管理系统记录所有提交的事务和与事务相关的更改。即使没有进行任何更改,服务器也会记录一个事务。我认为在存储无用数据时浪费服务器资源是没有意义的。
我同意Downpour046的观点。对于只读操作,我会采取以下措施。非常顺畅,没有问题。
Session session;
synchronized (this) {
session = currentSession();
Query rowResult = session.createSQLQuery(rowQuery).addEntity(table.getClass());
tableRow = rowResult.list().toArray();
}
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;
}