Mongodb 之insert瞬时完成,测试数据---飞天博客
这几天看mongdb官方网站,然后将执行数据。突然,我发现,该数据确实很强大,在这里说话数据。我用普通的pc机,amd双核 2.7GHz,4G内存,当然,当系统不只是在测试作为数据库server的。同时实施myeclipse,qq,什么杀毒软件,的时间的过程中,测试cpu左右95%的负载
详细什么结果呢?
刚開始測的时候,没注意,一下启动了10个线程。每一个线程插10000条数据,结果,系统不堪负载。断电黑屏了。这电脑有点问题。这下囧了。
好吧。然后在慢慢的摸索之下,插入10000条数据,改为插入1000条数据,10个线程改为100个线程,測试结果例如以下:mongodb 100个线程,每一个线程insert 1000次。76760 ms 一分10s的样子。
非关系型数据库还是非常厉害的
然后我又详细測试了一下500个线程,每一个线程同一时候插入10条记录,请看以下记录:以下的格式为:线程id:线程完毕时间;总共结束时间:5542ms
262:645 | 173:4896 | 388:5057 | 57:5351 |
460:561 | 222:4874 | 102:5230 | 149:5387 |
18:2183 | 298:4752 | 109:5233 | 384:5179 |
456:2105 | 301:4768 | 386:5059 | 396:5181 |
46:3060 | 176:4895 | 289:5126 | 32:5352 |
412:2851 | 189:4918 | 268:5132 | 437:4935 |
448:2909 | 133:4933 | 209:5259 | 444:4935 |
462:3363 | 231:4919 | 140:5259 | 101:5357 |
425:3423 | 91:4900 | 348:5116 | 459:4939 |
461:3417 | 72:4898 | 249:5260 | 418:4938 |
458:3507 | 365:4748 | 73:5239 | 451:4940 |
450:3544 | 221:4941 | 389:5074 | 147:5399 |
452:3585 | 99:4927 | 148:5265 | 142:5398 |
428:3662 | 299:4816 | 152:5275 | 404:5193 |
454:3735 | 241:4951 | 286:5119 | 166:5396 |
423:3820 | 243:4967 | 28:5242 | 51:5366 |
259:4270 | 119:4969 | 45:5246 | 202:5367 |
349:4139 | 19:5002 | 107:5249 | 489:4632 |
421:3872 | 363:4792 | 247:5269 | 484:4632 |
188:4285 | 223:4973 | 103:5249 | 442:4948 |
96:4284 | 383:4801 | 245:5271 | 435:4949 |
414:4049 | 25:5023 | 391:5086 | 491:4637 |
426:3881 | 227:4998 | 86:5250 | 495:4637 |
424:3945 | 371:4822 | 83:5252 | 497:4638 |
416:4122 | 225:5008 | 160:5283 | 143:5413 |
33:4384 | 367:4831 | 354:5101 | 499:4641 |
379:4228 | 52:4990 | 116:5253 | 145:5417 |
420:3983 | 179:5019 | 50:5253 | 493:4644 |
310:4275 | 422:4605 | 382:5082 | 480:4646 |
131:4428 | 256:5003 | 90:5256 | 482:4647 |
201:4427 | 121:5070 | 29:5257 | 485:4647 |
67:4410 | 123:5074 | 380:5085 | 487:4648 |
203:4496 | 261:5054 | 242:5259 | 93:5385 |
252:4550 | 39:5057 | 43:5260 | 138:5421 |
308:4477 | 233:5092 | 78:5260 | 483:4653 |
343:4493 | 35:5076 | 127:5287 | 481:4654 |
403:4448 | 417:4723 | 95:5265 | 157:5425 |
3:4685 | 430:4661 | 385:5103 | 465:4659 |
306:4495 | 237:5109 | 183:5290 | 406:5217 |
401:4456 | 125:5111 | 251:5288 | 469:4662 |
230:4626 | 253:5111 | 376:5093 | 471:4664 |
419:4225 | 229:5120 | 64:5268 | 476:4657 |
110:4627 | 239:5120 | 378:5097 | 477:4660 |
94:4640 | 235:5126 | 248:5256 | 467:4664 |
38:4639 | 36:5105 | 270:5168 | 479:4661 |
405:4483 | 273:5006 | 269:5171 | 478:4660 |
126:4659 | 272:4987 | 295:5165 | 473:4670 |
294:4541 | 360:4958 | 181:5298 | 463:4672 |
364:4508 | 192:5122 | 337:5162 | 472:4661 |
134:4681 | 362:4963 | 361:5120 | 408:5228 |
320:4557 | 113:5125 | 198:5278 | 470:4664 |
284:4560 | 62:5126 | 236:5280 | 468:4664 |
359:4538 | 150:5155 | 207:5303 | 79:5404 |
357:4540 | 117:5135 | 373:5120 | 141:5441 |
358:4541 | 7:5200 | 41:5281 | 474:4674 |
296:4575 | 88:5141 | 372:5107 | 429:4986 |
53:4701 | 5:5208 | 10:5351 | 466:4670 |
13:4772 | 114:5143 | 400:5110 | 56:5407 |
54:4708 | 328:5019 | 58:5282 | 431:4987 |
266:4614 | 55:5146 | 312:5160 | 427:4989 |
297:4610 | 283:5040 | 14:5359 | 486:4673 |
255:4741 | 282:5021 | 395:5127 | 475:4684 |
197:4743 | 70:5146 | 369:5132 | 488:4672 |
300:4596 | 316:5024 | 65:5292 | 159:5449 |
375:4563 | 351:5028 | 84:5293 | 492:4675 |
195:4749 | 274:5025 | 156:5326 | 494:4674 |
200:4731 | 254:5138 | 263:5294 | 410:5242 |
69:4731 | 49:5155 | 196:5297 | 490:4677 |
292:4607 | 279:5049 | 144:5330 | 139:5453 |
120:4739 | 336:5033 | 210:5299 | 409:5252 |
311:4628 | 212:5160 | 158:5329 | 433:4997 |
40:4739 | 11:5224 | 281:5194 | 464:4681 |
98:4742 | 250:5146 | 129:5324 | 498:4679 |
37:4744 | 97:5165 | 169:5337 | 208:5422 |
66:4742 | 399:5003 | 162:5332 | 496:4681 |
213:4769 | 74:5171 | 370:5128 | 12:5492 |
106:4748 | 285:5065 | 353:5182 | 500:4677 |
215:4774 | 187:5197 | 394:5131 | 76:5423 |
171:4777 | 340:5050 | 167:5341 | 180:5426 |
350:4632 | 124:5175 | 455:4885 | 333:5313 |
63:4755 | 112:5178 | 185:5331 | 318:5302 |
104:4755 | 47:5180 | 368:5136 | 322:5302 |
288:4630 | 194:5182 | 151:5345 | 218:5428 |
9:4822 | 352:5060 | 163:5348 | 228:5428 |
303:4646 | 75:5183 | 118:5313 | 130:5428 |
68:4757 | 100:5183 | 153:5349 | 238:5431 |
87:4765 | 34:5183 | 338:5190 | 204:5432 |
214:4766 | 332:5062 | 324:5190 | 111:5434 |
366:4591 | 271:5083 | 154:5347 | 27:5434 |
122:4766 | 71:5193 | 377:5156 | 6:5504 |
217:4795 | 258:5179 | 390:5145 | 60:5434 |
244:4784 | 246:5180 | 265:5216 | 182:5438 |
240:4786 | 184:5197 | 4:5389 | 8:5508 |
44:4788 | 161:5218 | 164:5349 | 26:5437 |
287:4703 | 307:5084 | 267:5217 | 331:5327 |
339:4701 | 309:5083 | 1:5394 | 42:5440 |
407:4650 | 15:5263 | 155:5357 | 313:5330 |
193:4839 | 132:5198 | 330:5200 | 24:5439 |
260:4810 | 277:5093 | 342:5200 | 92:5443 |
186:4821 | 257:5220 | 436:4903 | 329:5331 |
128:4819 | 135:5243 | 453:4906 | 345:5323 |
341:4706 | 30:5199 | 447:4908 | 290:5320 |
178:4823 | 397:5037 | 172:5360 | 234:5447 |
335:4709 | 314:5080 | 432:4909 | 327:5334 |
146:4842 | 326:5080 | 445:4912 | 278:5322 |
305:4717 | 80:5205 | 443:4912 | 276:5323 |
226:4831 | 85:5207 | 168:5364 | 325:5339 |
302:4707 | 211:5231 | 402:5161 | 356:5296 |
220:4837 | 77:5210 | 174:5360 | 319:5343 |
224:4837 | 31:5210 | 434:4913 | 381:5292 |
199:4861 | 293:5100 | 446:4916 | 264:5450 |
347:4718 | 22:5210 | 441:4918 | 89:5457 |
219:4865 | 280:5087 | 438:4918 | 108:5457 |
190:4844 | 20:5211 | 457:4920 | 232:5458 |
355:4692 | 315:5108 | 439:4921 | 82:5458 |
115:4848 | 137:5260 | 440:4920 | 16:5514 |
411:4628 | 393:5058 | 398:5172 | 136:5500 |
17:4903 | 48:5221 | 449:4923 | 346:5338 |
413:4637 | 334:5100 | 2:5416 | 291:5352 |
177:4884 | 392:5052 | 21:5400 | 323:5351 |
415:4639 | 206:5226 | 374:5174 | 321:5351 |
61:4864 | 105:5227 | 387:5184 | 344:5340 |
304:4739 | 216:5228 | 23:5402 | 317:5352 |
175:4889 | 59:5228 | 165:5385 | 191:5489 |
275:4764 | 205:5252 | 170:5380 | 81:5467 |
我这台机器上mongo最大连接数为:500,所以没測试很多其它。可是看到这上面的效率是非常好的啦。前面的线程差点儿是秒插入进去。假设要做个500个人同一时候注冊,单机mongodb就是小case。当然加大它的连接数。注意,这是连接数。不是MongoClient的个数。默认实例化mongClient的个数是为1的
从后台能够看到:db.mydb.count() 结果为:5000,说明这次測试结果所有没有出差错。速度之快,当然不用说。也查了一下原因。但和我做的实验实际还是有点出入
资料例如以下:
mongodb的这样的操作,client将文档发送给server之后就干别的了。
client也收不到“好的。知道了”或者“有问题,能又一次传送一遍嘛?”这类响应。这个特点的有点非常明显,速度块。这些操作都会非常块的;但server假设出问题,client不知道,比方server奔溃,断电什么的。client还是会继续发送写操作。
可是我下的这个mongodb。还是有出入的,由于当我关闭server,client报错了!
。。证明server出问题还是会被检測到。
至于发送写操作是否能验证是否成功。这个问题,java驱动会返回一个WriterResult结果,里面能够返回近期一次出错信息。想必这个版本号默认就设置了“安全操作”,也就是说。插入操作会返回信息,待用户推断是否将上一次为插入成功的数据再一次插入进数据库。“安全操作”在我看来还是非常快的,假设将“安全操作”设置为“非安全操作”版,插入速度应该会更快
这里附上mongodb的java驱动之crud
public class MongoTest { public static void main(String[] args) throws UnknownHostException {
MongoClient mongoClient = new MongoClient( "localhost" , 30000 );
DB db = mongoClient.getDB( "mytest" );
// 返回当前的数据库名称
// Set<String> colls = db.getCollectionNames();
//
// for (String s : colls) {
// System.out.println(s);
// }
DBCollection collection=db.getCollection("test");
BasicDBObject doc = new BasicDBObject("name", "xiaohua2");
collection.insert(doc);
System.out.println(collection.count());
mongoClient.close();
/* //得到一个集合。这个集合就是用来做crud的接口
DBCollection coll = db.getCollection("mydb");
//插入一个document,和sql的表差点儿相同
//The _id element has been added automatically by MongoDB to your document.
//Remember, MongoDB reserves element names that start with “_”/”$” for internal use
BasicDBObject doc = new BasicDBObject("name", "MongoDB")
.append("type", "database")
.append("count", 1)
.append("info", new BasicDBObject("x", 203).append("y", 102));
coll.insert(doc);
//得到第一条document
DBObject myDoc = coll.findOne();
System.out.println(myDoc);
//多条数据插入
for (int i=0; i < 100; i++) {
coll.insert(new BasicDBObject("i", i));
}
//统计document的行数
System.out.println(coll.getCount()); //使用游标
DBCursor cursor = coll.find();
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
mongoClient.close();
//查询
// BasicDBObject query = new BasicDBObject("i", 71);
// cursor = coll.find(query);
//
// try {
// while(cursor.hasNext()) {
// System.out.println(cursor.next());
// }
// } finally {
// cursor.close();
// }
*/
}
}
注意记得将mongoclient close掉
备注,假设转载:请标明出处blog.csdn.net/xh199110 飞天博客
假设有写的不正确的地方,欢迎指正。
作者也是看官方网站,查找信息,再加上自己的理解,我写这篇文章,这样我们就一起来学习。谢谢
版权声明:本文博主原创文章。博客,未经同意,不得转载。
Mongodb 之insert瞬时完成,测试数据---飞天博客的更多相关文章
- Nodejs+MongoDB+Bootstrap+esj搭建的个人简易博客
github:https://github.com/yehuimmd/myNodeBloy Nodejs+MongoDB+jQuery+Bootstrap-esj搭建的个人简易博客 主要功能 前台 : ...
- DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客
DigitalOcean 之前买了个便宜的VPS并且在上面搭建了我自己写的博客程序,后来VPS里运行MongoDB经常自己挂掉就索性没理了.直到现在VPS已经过期,服务器被强制关掉了.周末在家索性想着 ...
- MongoDB + express + node + bootstrap 搭建多人博客
这篇博客讲述如何搭建一个多人博客,需要一定的基础知识,用于思路整理和备忘. 第一步: 新建文件夹 blog ,结构如下: bin --- 可执行二进制文件,最终的启动接口. models --- 存储 ...
- mongoDB的基本使用----飞天博客
Mongo的介绍:这个mongoDB官网说的好啊,MongoDB是一个开源的基于document的数据库,并且是优秀的NoSQL数据库,并且它是用C++写滴哈,非常有效率.一些什么特点呢? 全索引支持 ...
- 第1章 Express MongoDB 搭建多人博客
学习环境 Node.js : 0.10.22 + Express : 3.4.4 + MongoDB : 2.4.8 + 快速开始 安装 Express express 是 Node.js 上最流行的 ...
- 项目实战(连载):基于Angular2+Mongodb+Node技术实现的多用户博客系统教程(2)
本章主要讲什么(一句话)? <项目实战:基于Angular2+Mongodb+Node技术实现的多用户博客系统教程(2)> -- 基于MongoDB的MyBlog数据库知识技术储备(上 ...
- MongoDB中insert方法、update方法、save方法简单对比
MongoDB中insert方法.update方法.save方法简单对比 1.update方法 该方法用于更新数据,是对文档中的数据进行更新,改变则更新,没改变则不变. 2.insert方法 该方法用 ...
- 2015年12月12 Node.js实战(一)使用Express+MongoDB搭建多人博客
序,Node是基于V8引擎的服务器端脚本语言. 基础准备 Node.js: Express:本文用的是3.21.2版本,目前最新版本为4.13.3,Express4和Express3还是有较大区别,可 ...
- ivqBlog 开源博客 (angularjs + express + mongodb)
转向做全职前端差不多一年的时间了,其中学习了构建工具grunt,gulp,angularjs,coffeescript,less,sass,自己想要做全栈开发,所以自学了mongodb,nodejs, ...
随机推荐
- 【Ruby】Ruby的model学习——Active Record Associations
在阅读的过程中有不论什么问题,欢迎一起交流 邮箱:1494713801@qq.com QQ:1494713801 一.怎样定义关联 两个model之间经常会存在关联关系,为了解决这些关联引起的复 ...
- SPARK如何使用AKKA实现进程、节点通信
SPARK如何使用AKKA实现进程.节点通信 <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 < ...
- ConditonHelper
在网上其实已经有很多类似这种拼接sql条件的类,但是没有看到一个让我感觉完全满意的这样的类.最近看到 http://www.cnblogs.com/xtdhb/p/3811956.html 这博客,觉 ...
- android最近心得整理
activity中OnAttachedWindow生命周期在OnResume之后,所以对长宽获取在推荐在OnAttachedWindow中进行. onDetachedWindow是在OnDestroy ...
- ArcGIS For Flex给定两个
1.错误叙述性说明 2.错误原因 3.解决方案 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- 2012Android开发热门资料(110个)
下载中心完整附件下载地址:http://down.51cto.com/data/412494 附件内容部分预览: 专题推荐: Android控:平板电脑HD精品游戏软件合集(共32个) http:// ...
- Using OpenCV Java with Eclipse(转)
转自:http://docs.opencv.org/trunk/doc/tutorials/introduction/java_eclipse/java_eclipse.html Using Open ...
- Libgdx: 将Texturepacker打包的PNG图片还原成一张一张的单个的
你是否发现用Texturepacker在打包压缩资源文件之后. 把原稿文件弄丢了,可是又要添加新的小png的时候,却无从下手了,本文就是博主在遇到这个问题后百度了非常多方法,可惜仅仅有plist格式的 ...
- EF 批量 循环删除
var list = db.T_xAppRecord.Where(u => u.Id == 1).ToList(); //2.0 遍历集合,将 要删除的 对象 的代理对象的State 设置为 D ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级) 企业库验证应用程序模块之配置文件模式: ...