AppEngine: странный счетчик операций записи при удалении
Я пытаюсь удалить 300 000 объектов в GAE (Java), используя это:
PersistenceManager pm = PMF.get().getPersistenceManager();
Date date70DaysAgo = Calendar.getInstance().getTime();
date70DaysAgo.setDate(date70DaysAgo.getDate()-70);
Query query = pm.newQuery(PositionApplication.class);
query.setFilter("date <= yyy");
query.declareParameters("java.util.Date yyy");
query.setRange(0,750);
Collection<PositionApplication> elements = (Collection<PositionApplication>)query.execute(date70DaysAgo);
pm.deletePersistentAll(elements);
Я ограничен 50 000 операций записи в день (свободная квота). Я наивно думал, что через 6-7 дней это должно быть сделано, но похоже, что на 1 звонок используется 1/5 дневной квоты.
-> Операции записи в хранилище данных 21% 0,01 из 0,05 млн операций
10 000 операций записи, почему не 750?
Это связано с индексами?
1 ответ
Решение
Когда вы удаляете сущность, хранилище данных также должно удалять индексы для каждого свойства и все записи в составных индексах.
Расчет для удаления каждого объекта:
2 записи + 2 записи для каждого индексированного значения свойства + 1 запись для каждого составного индекса
См. Документ " Ресурсы биллинга и бюджетирования" для расчета всех операций хранилища данных.