在只读数据库事务之后提交或回滚更好吗?

时间:2012-02-10 16:59:02

标签: database transactions

如果您的数据库事务应该是只读的,那么您是提交还是回滚?有什么理由去做其中一个吗?其中一种方法是否可以提高数据库性能?

2 个答案:

答案 0 :(得分:3)

某些RDMS(至少是Oracle)具有READ ONLY隔​​离级别。否则,我更喜欢ROLLBACK,因为它不会在事务日志中创建一个条目(从性能的角度来看稍微好一点)。

<强>更新 一些解释。
大多数RDMS记录所有已提交的事务和与事务关联的更改。即使未进行任何更改,服务器也会记录事务。我没有看到通过存储无用数据浪费服务器资源的任何要点。

答案 1 :(得分:1)

我同意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;
}