Я использую db.get ([keys]) и очень медленно читаю. Для простого теста требуется как минимум «9008cpu_ms 2125api_cpu_ms». Длина массива ключей ~ 200 . Это нормально?
Объекты маленькие:
p1 = db.StringProperty(indexed=False) - ~20 characters
p2 = db.StringProperty(indexed=False, required=True) ~10 characters
p3 = db.GeoPtProperty(indexed=False, required=True)
p4 = db.StringListProperty(indexed=False) 10 items x ~10 characters
Всего объектов в хранилище данных HRD: ~ 1000. Получено: ~ 200.
Appstats показывает:
datastore_v3.RunQuery 9ms (29ms api)
datastore_v3.Next 32ms (16ms api)
datastore_v3.Next 11ms (16ms api)
datastore_v3.Next 16ms (16ms api)
datastore_v3.Next 86ms (16ms api)
datastore_v3.Next 8ms (16ms api)
datastore_v3.Next 84ms (16ms api)
datastore_v3.Next 8ms (16ms api)
datastore_v3.Next 92ms (16ms api)
datastore_v3.Next 14ms (16ms api)
datastore_v3.Next 82ms (16ms api)
datastore_v3.Next 8ms (16ms api)
datastore_v3.Next 86ms (16ms api)
datastore_v3.Next 96ms (16ms api)
datastore_v3.Next 7ms (16ms api)
datastore_v3.Next 92ms (16ms api)
datastore_v3.Next 92ms (16ms api)
datastore_v3.Next 9ms (16ms api)
datastore_v3.Next 89ms (16ms api)
datastore_v3.Next 7ms (4ms api)
datastore_v3.Get 5692ms (8ms api)
datastore_v3.Get 5688ms (8ms api)
datastore_v3.Get 5684ms (8ms api)</code>
И сотни:
datastore_v3.Get ~ 5681ms (8ms api)
Источник:
logging.debug('Fetching ' + str(len(m.keys())) + ' entities')
items = db.get(m.keys())
logging.debug('Done fetching items')
Вход:
D 2011-10-30 22:46:41.495 Fetching 238 entities
D 2011-10-30 22:46:50.009 Done fetching items
W 2011-10-30 22:46:54.407 Full proto too large to save, cleared variables.
Обновление 1 (понедельник, 31 октября 2011 года в 23:33:42 UTC):
При поиске возможного решения я удалил свойство StringList и воссозданные сущности. Без изменений.
Пример объекта:
ID/Name|description|location|name
id=804|Sample description|54.8968721,23.892426|Sample place
Обновление 2 (вторник, 1 ноября 2011 г. в 12:27:31 UTC):
Снимок экрана вывода Appstats: