ホームページ >バックエンド開発 >Golang >Golang Mongo ドライバーを使用すると、単純なクエリに 2 秒以上かかるのはなぜですか?

Golang Mongo ドライバーを使用すると、単純なクエリに 2 秒以上かかるのはなぜですか?

王林
王林転載
2024-02-06 09:30:081198ブラウズ

为什么使用 Golang Mongo 驱动程序执行一个简单的查询需要花费 2 秒以上的时间?

質問の内容

私は mongo データベースを使用して golang Web サービスを作成しています。 go.mongodb.org/mongo-driver v1.11.6 を使用しています。単純なクエリは完了するまでに 2 秒以上かかります。データベースにはテスト用に数レコードしかなく、最大 10 レコードしかありません。

コードの中で時間を無駄にしている部分を探していたところ、問題は mongo パッケージにあることがわかりました。 find、findone、さらには挿入および更新メソッドはすべて、完了までに 1 ~ 2 秒以上かかります。

これは mongo クライアントのインスタンス化です

リーリー

これは関数コードです:

リーリー

これは関数時間追跡の結果です:

リーリー

Python でクエリをテストしたところ、リクエストにかかる時間はわずか 0.003 秒だったので、これはインターネット接続とは関係ありません。

パッケージのバージョンを変更してみましたが、うまくいきませんでした。プロジェクトのすべてのパッケージを再インストールしようとしましたが、同じ結果でした。

データベースに検索インデックスを作成しようとしましたが、異なる結果は得られませんでした。また、クエリが完了するまでに 2 秒以上かかります。

クエリが完了するまでに数ミリ秒以上かかることはないと思います。


正解


##mongo.Connect() "のみ" バックグラウンド監視のゴルーチンを起動して初期化する クライアント。 (リモート) データベースに接続する必要がない場合があります。 クエリを実行するときは、当然ながら接続を確立する必要があり、これには数秒かかる場合があります。

データベースへの接続を強制し、接続が正常に作成されたことを確認する前に、

Client.Ping() メソッドを使用できます。そのため、クエリを実行すると、接続が準備が整います。 最初のクエリの後、接続は閉じられずに接続プールに入れられ、再度必要になったときに (2 番目のクエリの場合) 再利用されるため、同じクエリを繰り返してみることもできます。

以上がGolang Mongo ドライバーを使用すると、単純なクエリに 2 秒以上かかるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。