yopp
моя гипотеза что это оптимизация из-за того что у вас сортировка по индексу и limit 1
Alexey
Alexey
yopp
попробуйте limit 1000 сделать
yopp
isEOF 0 говорит что диапазон был не доконца прочитан
yopp
и advances 1 говорит что стейдж наверх однажды проплюнул результат
Alexey
с лимит 1000
Alexey
вот это меня уже больше радует
Alexey
ну для понимания
Alexey
так-то грустно
yopp
ну да
yopp
это сайд эффект advanced
yopp
точнее не сайд эффект, а эффект :)
Alexey
а есть что-нибудь в документации почитать про advanced, что-то найти не могу
yopp
https://docs.mongodb.com/manual/reference/explain-results/
yopp
https://docs.mongodb.com/manual/reference/explain-results/#explain.executionStats.executionStages.advanced
Alexey
спасибо еще раз огромное!
yopp
вобщем случае не используйте лимит при дизайне запросов, если он не является частью боевого запроса
yopp
иначе могут быть вот такие вот эффекты
Alexey
Он как раз таки и является, хотел подобрать хороший compoundIndex под запросы и тестировал на всех, и запрос с лимитом ввёл меня в ступор
yopp
limit 1?
Alexey
Да
yopp
ну тогда всё в порядке :)
yopp
монга в вашем случае неплохо справляется
yopp
в этом конкретном случае :)))
yopp
т.е. у вас качество запроса зависит от комбинации данных
yopp
mapData и terminal судя по всему хорошие кандидаты на пересечение
yopp
вероятно вам не нужен compoundIndex в этом слуачае
Alexey
я либо что-то не понимаю, но я наслушался, что для шардирования требуется один индекс, и теперь во всех случаях пытаюсь для одной коллекции угодить одним compoundIndex, чтобы, когда проект дорастет до шардов, не возникло проблем, возможно я неправльно себе представляю понятие shardkey
yopp
для ключа шардирования требуется один индекс
yopp
для всего остального — не требуется
Alexey
ну вот, и я как огня боюсь нескольких индексов, чтобы потом не было бродкастов по всем шардам
yopp
это не от индекса зависит
yopp
а от выбора ключа
yopp
хороший ключ обладает двумя свойствами: он есть во всех запросах и он бесконечно делится
yopp
и это к индексам имеет посредственное отношение
yopp
ничего не мешает иметь несколько индексов
yopp
потому что в случае когда у вас в запросе есть ключ который позволяет установить пренадлежность данных к шарду, на шарде монга если что будет уже использовать пересечение
Alexey
это отличная новость, тогда действительно надо будет протестировать пересечения
yopp
т.е. идея хорошего шард ключа в том, чтоб mongos мог глядя на ваш запрос устновить куда идти, сопоставив ключ из запроса с картой чанков
yopp
броадкаст это когда монгос не смог этого сделать и ¯\_(ツ)_/¯ всем
yopp
а не сможет он скорее всего в одном случае: в запросе нет шард ключа :)
yopp
или его префикса
Alexey
а можно совет, вот есть у меня коллекция event, запросы либо {terminal: ObjectId(), mapData: ObjectId(), active: true, changedAt: {}}, либо тоже самое без active, мне лучше просто сделать 4 индекса? или terminal + active = compound и еще два на changedAt и mapData
yopp
зависит от данных
yopp
и как следствие от селективности индексов
yopp
берите срез пожирнее и на нём тестируйте
yopp
главное определите сразу что для вас «лучше»
yopp
выделите KPI, составьте карту запросов, составьте список тестируемых конфигураций индексов дальше меряйте kpi для запросов с каждой из тестируемых конфигураций (по отдельности)
yopp
не забывайте что индексы могут иметь большой эффект на вставку данных
yopp
вебинар чтоле сделать про тестпланы
Alexey
жаль, что Вы после двух стримов, забросили это дело, я за два стрима получил огромное количество полезной инфы, спасибо Вам, хотя, наверное, с них отдачи для Вас никакой
Alexey
благодарю за уделенное время
Anonymous
У монги есть поиск как fuzzy у elasticsearch
Anonymous
?
Anonymous
С учётом префикса суффикса и языка
yopp
https://docs.mongodb.com/manual/core/index-text/
AstraSerg
вебинар чтоле сделать про тестпланы
Ага, это дело. А где его найти?
yopp
В плейграунд приехали Explain для Find и Aggregate! :)
Hellomik
хай всем привет (node js), кто знает как скидывать данные по частям , типо как вк новости же он грузит по очереди и не все сразу что бы файл был маленький
Anonymous
Юзай .skip() и limit()
Артем
Парни) подскажи самый оптимальный запрос для выбора последних N записей из коллекции?
Nick
создать некоторое поле монотонно возрастающее, по нему индекс, и собственно выбрка с сортировкой и лимитом
Nick
если же вы вдруг N фиксировано и не будет меняться, а так же вам не надо делать всякие фильтрации, то можете посмотреть в сторону capped коллекций
Nick
https://docs.mongodb.com/manual/core/capped-collections/
Nick
нет, но подвезли транзакции
Nick
в общем случае стандарный id удовлетвораяет услвоиям монотонного роста
Nick
решите для себя на сколько критична не совсем правильный порядок в выдаче это поможет чтонибудь упростить или взят ьуже существующее поле какоенить
Anonymous
привет всем, подскажите, как отловить query в mongo так, чтоб всю query бало видно, а не её часть. пытаюсь отловить через db.currentOp() ?
Slava
https://docs.mongodb.com/manual/reference/method/db.setLogLevel/
Anonymous
тогда эти запросы будут в лог выпадать?
Anonymous
ок, спасибо Вячеслав! попробую так :)
Anonymous
есть приложенька которая кидает запросы в mongo, мне нужно отловить то, что она кидает
yopp
db.setProfilingLevel(2)
yopp
И потом смотрите в system.profile
Do Some
Запрашиваю документы с внешней базы с авторизацией. Прилетают изменившиеся _id. Подскажите, пожалуйста, почему так происходит? Мне нужно по _id удалять документы.