Appengine Datastore Multiple "ставит" производительность транзакций - PullRequest
1 голос
/ 21 февраля 2012

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

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

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

1 Ответ

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

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

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

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

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

...