После транзакции с базой данных только для чтения лучше зафиксировать или откатить? - PullRequest
2 голосов
/ 10 февраля 2012

Если у вас есть транзакция базы данных, которая должна быть только для чтения, вы фиксируете или откатываете?Есть ли причина делать то или другое?Улучшает ли один из подходов производительность базы данных?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

Некоторые RDMS (по крайней мере, Oracle) имеют уровень изоляции READ ONLY.В противном случае я предпочитаю ROLLBACK, поскольку он не создает записи в журнале транзакций (немного лучше с точки зрения производительности).

Обновление Некоторые пояснения.
Большинство СУБДрегистрировать все совершенные транзакции и изменения, связанные с транзакцией.Даже если не было внесено никаких изменений, сервер регистрирует транзакцию.Я не вижу смысла тратить ресурсы сервера на хранение ненужных данных.

1 голос
/ 10 февраля 2012

Я согласен с 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...