2012-02-21 2 views
1

У меня есть запрос, выполняющий несколько операций «put» на объектах, принадлежащих к той же группе сущностей.appengine datastore multiple «puts» transaction performance

Не важно, чтобы они были в сделке, но мне было интересно, какое влияние на это оказывает влияние. Есть ли шансы на улучшение, поскольку после того, как будет записано только одно изменение?

Более того, если у меня есть несколько операций «put» на одном объекте внутри транзакции. Разве это не отличается от одной операции «положить» в конце?

ответ

1

Некоторые сопутствующую информацию, то хранилище данных App Engine основан на базе Megastore Google, вы можете прочитать на нем здесь, когда вы в отпуске: http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//pubs/archive/36971.pdf

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

Я не сотрудник Google, поэтому я не уверен в последней части вопроса. Вы, по сути, спрашиваете, есть ли у них оптимизация для транзакций, которые будут охватывать несколько puts в один put. Я не видел упоминания о такой оптимизации, я не думаю, что она существует. Каждая операция ввода, по сути, записывает весь объект, поэтому я подозреваю, что операции с несколькими путями на одном объекте будут намного хуже, чем один положительный результат в конце.

Новый API ndb может иметь некоторую оптимизацию для этого.

Смежные вопросы