yopp
будет по 1 :)
yopp
это не index-only query
Oleg
я запустил и сервер перестал работать
Oleg
yopp
так на время создания индексов коллекция лочится
Viktor
будет по 1 :)
согласен, док с диска еще прочитать и вернуть нужно)
yopp
большая коллекция?
Oleg
Oleg
yopp
а размер? пару гигов?
Oleg
Oleg
yopp
придётся подождать :)
Oleg
Oleg
20к юзерам тоже
Oleg
Ладно
Oleg
yopp
эм
Oleg
Спасибо
yopp
вы из чятов в продакшен советы не кидайте сразу :)
Viktor
а то мы предложим дропнуть коллекцию
Oleg
А сколько ждать?
Alex
минут пять хотяп
Viktor
от железа же зависит
yopp
зависит от того насколько быстрое хранилище и хватит ли памяти чтоб положить и коллекцию и индекс
Oleg
yopp
эт ваще ни о чём не говорит :)
Oleg
Oleg
Oleg
yopp
можешь прогресс в логе монги посмотреть
yopp
в следующий раз используй background: true хотя
yopp
ну и да
yopp
у тебя там есть лишние индексы
yopp
{type: 1} и {type: 1, status: 1, date: 1}
yopp
первый индекс покрывается вторым
Oleg
yopp
не надо пока ничего делать :)
Oleg
yopp
можно посмотреть на https://docs.mongodb.com/manual/tutorial/measure-index-use/
yopp
и удалить индексы которые не используются
Oleg
Я так понял, что на продакшене лучше ничего такого не делать?
yopp
что это за график?
Oleg
Запросы к боту в минуту
yopp
на продакшене — да
Oleg
Монга перестала отвечать, бот перестал отвечать и запросы начали накапливаться
yopp
поднять репликасет во-первых
yopp
и строить индексы вот так: https://docs.mongodb.com/manual/tutorial/build-indexes-on-replica-sets/
Oleg
Слишком сложна, можно полегче?
yopp
ну тогда будет картинка выше
Oleg
Oleg
Спасибо
yopp
можно с background: true, но это не гарантирует что монга не приляжет
Oleg
А как узнать что изменилось? Профилирование?
yopp
запустить запрос с explain("executionStats") и посмотреть на documents scanned и index keys scanned
Oleg
Oleg
Решил достать ласт записи:
Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.
Viktor
если основная работа сервиса - поиск по айдишникам чата и поста, то должен увидеть, что среднее время ответа сократилось
Viktor
но это слишком косвенная метрика будет
Viktor
по-хорошему нужно было смотреть executionStats до индекса и после
Oleg
Да суть в том, что там подгружается тонна лишней инфы, а нужно всего вытащить одну строку
Oleg
И таких запросов сотни в минуту
Помимо других
Oleg
Так вот я думаю сделать кеширование отдельной коллекцией
yopp
не надо
Oleg
туда класть то что нужно и потом доставать
Viktor
Viktor
можно попробовать сделать более "жирный" индекс и запрос изменить так, чтобы он стал covered
Viktor
т.е. чтобы запрос покрывался только индексом и монге не приходилось смотреть в документы на диске
yopp
не очень понятно что вообще происходт, мы тут в экстрасенсов играем
λ
А стоит использовать монгу для подсчета чего-то?
λ
Можно научить ее держать определенную колекцию только в памяти?
λ
Или еще лучше если "кастомно" ее сбрасывать на диск по времени/кол-ву изменений
Oleg
Это скорее redis.
yopp
yopp
точнее как, можно в enterprise использовать memory storage engine
yopp
но это совсем не то
yopp
более того, не понятно зачем