前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mgo 使用

mgo 使用

作者头像
solate
发布2019-07-22 17:50:39
7640
发布2019-07-22 17:50:39
举报
文章被收录于专栏:solate 杂货铺solate 杂货铺

批量插入

参考批量插入

使用 mgo Bulk() 方法进行插入

代码语言:javascript
复制
func BenchmarkBulkInsert(b *testing.B) {
	b.StopTimer()
	// Database
	dbs, err := mgo.Dial("mongodb://localhost/ac-bench")
	if err != nil {
		panic(err)
	}

	// Collections
	uc := dbs.Clone().DB("").C("usersBenchmarkBulk")
	defer dbs.Clone().DB("").Session.Close()

	// Clear DB
	uc.RemoveAll(bson.M{})
	b.StartTimer()

	for n := 0; n < b.N; n++ {
		count := INSERT_COUNT
		users := make([]interface{}, count) //必须定义成[]interface{}
		for i := 0; i < count; i++ {
			loop_user := User{}
			loop_user.Init()
			loop_user.Email = fmt.Sprintf("report-%d@example.com", i)
			users[i] = loop_user
		}
		bulk := uc.Bulk()
		bulk.Unordered()
		bulk.Insert(users...)
		_, bulkErr := bulk.Run()
		if bulkErr != nil {
			panic(err)
		}
	}
}

测试

代码语言:javascript
复制
go test -bench=".*" -cpu 1,2

BenchmarkFlatInsert                  100          12281273 ns/op
BenchmarkFlatInsert-2                100          12981239 ns/op
BenchmarkParallelInsert              200           6963727 ns/op
BenchmarkParallelInsert-2            200           7948616 ns/op
BenchmarkBulkInsert                 2000           1134782 ns/op
BenchmarkBulkInsert-2               2000           1072460 ns/op
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 批量插入
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档