繁体   English   中英

在MongoDB中每秒测量插入的最佳方法是什么?

[英]What is the best way to measure inserts per second in MongoDB?

我有一个多线程(使用线程池)C#程序,它从包含日志的文本文件中读取并批量插入到MongoDB集合中。 我想要一种一致且精确的方法来测量将整个文件插入集合所需的时间。

我无法真正调用thread.join(因为它是一个线程池),我不能使用秒表,因为它们在不同的线程上运行。

什么是下一个最好的东西?

我正在做的当前方式是智能手机上的计时器。 我反复调用db.collection.stats()并等到计数与文件中的日志数相同...

使用mongostat (命令行工具),您可以清楚地看到MongoDB服务器中发生了什么。 它会每秒为您提供插入/查询等。 插入完成后它不会自动停止,但它肯定会让您对性能有所了解。 完成导入后,“插入”将降至0。

如果您使用的是C#4.0+,我建议您使用CountdownEvent类。 使用该类,您只需创建一个具有日志数的实例,例如作为计数器:

var countdown = new CountdownEvent(numberOfLogs);

然后,每次完成对MongoDB的写入时,都会从工作线程发出信号:

countdown.Signal(); // decrement counter

然后,在您的主进程(或另一个线程)中:

countdown.Wait(); // returns when the count is zero
// All writes complete

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM