【发布时间】:2012-03-03 03:35:16
【问题描述】:
如果您有一个应该只读的数据库事务,您是提交还是回滚?有什么理由做其中一个吗?其中一种方法是否可以提高数据库性能?
【问题讨论】:
标签: database transactions
如果您有一个应该只读的数据库事务,您是提交还是回滚?有什么理由做其中一个吗?其中一种方法是否可以提高数据库性能?
【问题讨论】:
标签: database transactions
一些 RDMS(至少是 Oracle )具有只读隔离级别。否则,我更喜欢ROLLBACK,因为它不会在事务日志中创建条目(从性能角度来看要好一些)。
更新
一些解释。
大多数 RDMS 记录所有已提交的事务以及与事务相关的更改。即使没有进行任何更改,服务器也会记录一个事务。我没有看到通过存储无用数据来浪费服务器资源的任何意义。
【讨论】:
我同意 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;
}
【讨论】: