appengine datastore несколько ставит производительность транзакций

У меня есть запрос, выполняющий несколько операций "помещения" для сущностей, принадлежащих к одной и той же группе сущностей.

Для них не обязательно быть в транзакции, но мне было интересно, как это повлияет на производительность. Есть ли шанс, что производительность улучшится, поскольку при фиксации записывается только один набор изменений?

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


person Tomer Weller    schedule 21.02.2012    source источник


Ответы (1)


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

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

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

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

person dragonx    schedule 21.02.2012