Вопросы

Производительность драйвера 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

Читать:
В AWS Пробовал подключать rds из ec2, оба находятся в одном и том же vpc (не vpc по умолчанию), получая ошибку

Я бы также выполнил вызов 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

Похожие записи

Зависит от cloud_firestore 0.14.4 и http 0.13.3, решение версии не удалось

admin

Cypress — Ошибка: не удается найти модуль ‘../../webpack.config.js’

admin

Как обновить слои классификации без изменения весов для сверточных слоев

admin

Как извлечь индексы ввода-вывода позиции из текстового токенизатора huggingface transformer?

admin

Мое приложение не запустится, если я не объявлю main как wmain. Это почему? (Visual Studio 19)

admin

Вопрос о pip с использованием Python из Магазина Windows

admin