Mongo Find慢下来

2022-01-25 01:16:06 标签 databasemongodbgo

我正在使用mongodb数据库包golang找到一个文件。当我在go例程中运行多个readMongo函数时,运行readMongo函数所花费的时间增加了。这是我的机器的I/O限制吗?我正在阅读的文件小于0。5MB。

func main(){
   go readMongo()
   go readMongo()
   go readMongo()
}
func go readMongo(){
  ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
  defer cancel()
  client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
   if err != nil{
    //handle err
    }
     t1:=time.Now()
   collection := client.Database("Data").Collection("myCollection")
   if err := collection.FindOne(ctx,bson.M{"_id": "myKey"}).Decode(&data); err!= nil{}
  t2:=time.Now()
   fmt.Println(t2.sub(t1).Milliseconds())
 }

###首先:连接数据库一次,并使用相同的客户端所有的goroutines。mongodb客户端管理连接池。

随着并发性的增加,单个读操作的性能会下降,主要原因是网络带宽。所有并行读取将共享到数据库的相同连接,从而导致速度变慢。在您的示例中,您正在并行地通过多个连接进行读取,从而导致读取操作共享网络带宽。在现实生活中的生产负载中,数据库流量通常是随机的,每个单独的goroutine的速度放缓是不可预测的。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码