【问题标题】:After a read-only database transaction is it better to commit or rollback?在只读数据库事务之后是提交还是回滚更好?
【发布时间】:2012-03-03 03:35:16
【问题描述】:

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

【问题讨论】:

标签: database transactions


【解决方案1】:

一些 RDMS(至少是 Oracle )具有只读隔离级别。否则,我更喜欢ROLLBACK,因为它不会在事务日志中创建条目(从性能角度来看要好一些)。

更新 一些解释。
大多数 RDMS 记录所有已提交的事务以及与事务相关的更改。即使没有进行任何更改,服务器也会记录一个事务。我没有看到通过存储无用数据来浪费服务器资源的任何意义。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 2014-05-29
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      相关资源
      最近更新 更多