Производительность драйвера golang mongo

Я написал код для тестирования mongodb. Но скорость у него такая плохая. Что не так?

func mgoSpeedTest(N int) int64 { session, err := mgo.Dial(MongoHost) if err != nil { panic(err) } defer session.Close() session.SetMode(mgo.Monotonic, true) start := time.Now() for i := 0; i < N; i++ { sessionCopy := session.Copy() c := session.DB(MongoDB).C(MongoCol) _, err = c.Find(bson.M{«id»: 1}).Count() if err != nil { log.Fatal(err) } sessionCopy.Close() } t := time.Now() elapsed := t.Sub(start) return elapsed.Milliseconds() } func main() { // speed test N := 1000 ms = mgoSpeedTest(N) println(fmt.Sprintf(«mgo: %d», ms)) }

Ответ ~~ 3500мс Пробовал использовать mongo-client, но скорость та же ~ 3700-3800

Вы выполняете 1 тысячу запросов, в среднем 3,5 мс (включая передачу по сети туда и обратно, выполнение базы данных, обработку результатов, копирование и закрытие сеанса). Что считается хорошим? Учитывая то, что происходит под капотом, я не думаю, что это плохо. Используйте тот же сеанс, если хотите повысить производительность.   —  person Егор Козельский    schedule 16.10.2019

Я также пробовал вставить 1000 документов в базу данных localhost. 1000 вставок = 36 секунд. Но в официальных скоростных характеристиках разница в скорости   —  person Егор Козельский    schedule 16.10.2019

Я бы также выполнил вызов mgo.Dial() перед запуском таймера, чтобы убедиться, что ваш сеанс готов.   —  person Егор Козельский    schedule 16.10.2019

И вы исключаете возможность того, что это ваш код плохо себя ведет? Я бы не стал. Раскройте код, и мы сможем выяснить, в чем проблема. Подсказка: если бы это было обычным явлением, никто бы не использовал драйвер mongo. Даже MongoDB Inc. И все их инструменты (mongodump и т. Д.) Написаны на Go.   —  person Егор Козельский    schedule 16.10.2019

Кроме того, вы смотрите вверх id (не _id, заметьте). Это в основном означает, что выполняется сканирование коллекции. Суть: MongoDB необходимо открывать каждый документ, читать его, сравнивать значение поля id с 1. Кстати, ваш код даже не компилируется — у меня такое ощущение, что вы скрываете информацию случайно или намеренно. Если код отсутствует, это не позволяет нам помочь вам должным образом.   —  person Егор Козельский    schedule 18.10.2019

Источник: ledsshop.ru

Стиль жизни - Здоровье!