При попытке оптимизировать запрос для получения записей магазина в зависимости от местоположения я добавил что-то странное (я думаю), получение большого набора данных занимает ОДНО процессорное время.
В основном у меня> 1000 записей, которыеМне нужно выполнить итерацию, чтобы найти магазины на расстоянии 3000 м от позиции пользователя, и я получил довольно большие цифры в консоли администратора.
Это привело к некоторому тестированию хранилища данных, которое привело к некоторым интересным числам для получения 1000 записей.
У меня есть 6 методов тестирования, которые я запускал отдельно и взял время процессора из консоли администратора и приложений, и это привело к (в производстве):
r = db.GqlQuery("SELECT __key__ FROM StoreRecords").fetch(1000)
# appstats: real=120ms cpu=182ms api=845ms
# admin console: 459ms 1040cpu_ms 845api_cpu_ms
r = db.GqlQuery("SELECT __key__ FROM StoreRecords").fetch(100)
# appstats: real=21ms cpu=45ms api=95ms
# admin console: 322ms 134cpu_ms 95api_cpu_ms
r = db.GqlQuery("SELECT * FROM StoreRecords").fetch(1000)
# appstats: real=1208ms cpu=1979ms api=9179ms
# admin console: 1233ms 10054cpu_ms 9179api_cpu_ms
r = db.GqlQuery("SELECT * FROM StoreRecords").fetch(100)
# appstats: real=57ms cpu=82ms api=929ms
# admin console: 81ms 1006cpu_ms 929api_cpu_ms
r = model.StoreRecords.all().fetch(1000)
# appstats: real=869ms cpu=1526ms api=9179ms
# admin console: 1061ms 9956cpu_ms 9179api_cpu_ms
r = model.StoreRecords.all().fetch(100)
# appstats: real=74ms cpu=86ms api=929ms
# admin console: 97ms 1025cpu_ms 929api_cpu_ms
Здесь я беру толькосамое большее 1000 записей, но нужно будет выбрать все (около 4-5000).
Мои вопросы:
- Если выборка 1000 записей действительно займет почти 20 (10054cpu_ms + 9179api_cpu_ms) секунд?
- Почему существуют различия между временем appstas и консоли администратора?Что рассчитывается по моей квоте?
Можно легко обойти это, отправив извлеченные записи в memcache в качестве протобуфа.Но меня интересует интенсивное использование и различия во времени между appstas и консолью администратора.
Бонусный вопрос : Почему при извлечении 1000 записей всегда 9179api_cpu_ms