Существует ли какой-либо риск для производительности, когда транзакции переносят каждое событие хранилища данных в App Engine - чтение и запись? - PullRequest
2 голосов
/ 26 сентября 2010

Согласно документам App Engine, вы оборачиваете событие хранилища данных в транзакцию следующим образом:

import javax.jdo.Transaction;

import ClubMembers;   // not shown

// ...
        // PersistenceManager pm = ...;

        Transaction tx = pm.currentTransaction();

        try {
            tx.begin();

            ClubMembers members = pm.getObjectById(ClubMembers.class, "k12345");
            members.incrementCounterBy(1);
            pm.makePersistent(members);

            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
        }

Это негативно скажется на производительности приложения, если вы включите не только каждое событие записи в транзакциюно каждое событие чтения также?

Ответы [ 2 ]

2 голосов
/ 26 сентября 2010

Конечно, накладные расходы на выполнение операций чтения и записи в транзакциях.

В большинстве случаев это не имеет смысла - если вы просто читаете значение из хранилища данных, а затем переносите одно чтениеоперация в транзакции не имеет преимуществ.Сохраняйте транзакции, если у вас есть набор из нескольких операций, которые необходимо выполнить вместе (например, пример get, increment, persist, который вы включили в свой вопрос).Документация GAE включает раздел о использовании для транзакций , который может оказаться полезным.

Кроме того, часто удобно выполнять пакетные операции с хранилищами данных, чтобы свести к минимуму количество обратных вызовов между вашим приложением ихранилище данных.Если вы заключите каждую операцию в транзакцию, вам придется отправлять каждую транзакцию отдельно (что будет немного медленнее, особенно если вы выполняете каждый запрос синхронно).

1 голос
/ 26 сентября 2010

Поскольку объявление транзакции является более трудоемким, оно должно повлечь за собой дополнительные затраты.При этом у меня никогда не было времени, когда ненужные транзакции были причиной моих проблем с производительностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...