Вопросы о поведении получения Cursor of datastore - PullRequest
0 голосов
/ 10 января 2019

У меня вопрос по поводу получения Курсора

Целевая функция: https://godoc.org/google.golang.org/appengine/datastore#Iterator.Cursor

Насколько можно прочитать из следующего кода, смещение устанавливается при получении курсора https://github.com/golang/appengine/blob/master/datastore/query.go#L702-L705

Когда я проверял результат при выполнении этой функции с помощью трассировки стека консоли GCP, Insights отображает предупреждение

Issue: Use of offset in datastore queries.
Description: Your app made 1 remote procedure calls to datastore.query () and datastore.next () using offset.
Recommendation: Use cursor instead of offset.

Детали запроса

g.co/gae/datastore/offset 10
g.co/gae/datastore/skipped 10

смещение влияет на производительность и биллинг, я хочу избежать такого поведения Есть ли способ избежать использования смещения? Или это правильное поведение?

1 Ответ

0 голосов
/ 10 января 2019

От Смещения относительно курсоров :

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

q.offset, на которую вы ссылаетесь, является внутренней переменной, используемой для реализации Cursor, это не явное смещение запроса, о котором упоминается в приведенной выше цитате.

Так что вы должны быть в порядке, используя Cursor.

...