曹小麟 發表於 2019-5-30 19:27:00

Mongodb 性能测试

<div>
<div>
<ul>
<li>
<p>测试硬件环境 MacPro</p>
<ul>
<li>处理器名称: Intel Core i7</li>
<li>处理器速度: 2.5 GHz</li>
<li>处理器数目: 1</li>
<li>核总数: 4</li>
<li>L2 缓存(每个核): 256 KB</li>
<li>L3 缓存: 6 MB</li>
<li>内存: 16 GB</li>
</ul>
</li>
<li>
<p>测试软件环境</p>
<ul>
<li>MongoDB v3.2.4</li>
<li>300W存量数据</li>
</ul>
</li>
</ul>
<h1>1.1 单条插入性能测试</h1>
<p>插入数据大小30字节</p>
<table>
<thead>
<tr><th>插入条数(单位:万)</th><th>耗时(单位:毫秒)</th></tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>999</td>
</tr>
<tr>
<td>2</td>
<td>2176</td>
</tr>
<tr>
<td>5</td>
<td>5140</td>
</tr>
<tr>
<td>10</td>
<td>10198</td>
</tr>
</tbody>
</table>
<blockquote>
<p>结论:在当前测试环境下每秒写入速度为1万</p>
</blockquote>
<h1>1.2 单条读取性能测试</h1>
<p>测试语句</p>
<pre class="hljs bash"><code class="bash">db.follower.find({<span class="hljs-string">'user_id':1000069, <span class="hljs-string">'follower_id': 1000089}).Limit(1)
</span></span></code></pre>
<table>
<thead>
<tr><th>读取条数(单位:万)</th><th>耗时(单位:毫秒)</th></tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>1227</td>
</tr>
<tr>
<td>2</td>
<td>2383</td>
</tr>
<tr>
<td>5</td>
<td>6024</td>
</tr>
<tr>
<td>10</td>
<td>12196</td>
</tr>
</tbody>
</table>
<blockquote>
<p>结论: 每秒读取速度 8000</p>
</blockquote>
<h1>1.3 分页读取性能测试——采用Skip实现</h1>
<p>测试语句</p>
<pre class="hljs css"><code class="css"><span class="hljs-selector-tag">mg<span class="hljs-selector-class">.C("<span class="hljs-selector-tag">follower")<span class="hljs-selector-class">.Find(<span class="hljs-selector-tag">condition)<span class="hljs-selector-class">.Sort("<span class="hljs-selector-tag">-_id")<span class="hljs-selector-class">.Skip(10000)<span class="hljs-selector-class">.Limit(10)<span class="hljs-selector-class">.All()
</span></span></span></span></span></span></span></span></span></span></code></pre>
<p>按照每页10条计算</p>
<table>
<thead>
<tr><th>功能场景</th><th>耗时(单位:毫秒)</th></tr>
</thead>
<tbody>
<tr>
<td>读取10000条之后的 10条数据</td>
<td>15</td>
</tr>
<tr>
<td>读取50000条之后的 10条数据</td>
<td>70</td>
</tr>
<tr>
<td>读取100000条之后的 10条数据</td>
<td>140</td>
</tr>
</tbody>
</table>
<blockquote>
<p>结论:<br>
随着查询偏移量的上升(1w, 5w, 10w),查询耗时出现线性增长。尽量避免使用 Skip 做为分页策略</p>


</blockquote>
<h1>1.4 批量写入性能测试</h1>
<p>插入数据大小30字节</p>
<table>
<thead>
<tr><th>一次插入条数</th><th>耗时(单位:毫秒)</th><th>速度 (单位: 毫秒/条)</th>
</tr>


</thead>
<tbody>
<tr>
<td>5000</td>
<td>80</td>
<td>0.016</td>


</tr>
<tr>
<td>2000</td>
<td>32</td>
<td>0.016</td>


</tr>
<tr>
<td>1000</td>
<td>18</td>
<td>0.018</td>


</tr>
<tr>
<td>100</td>
<td>2.15</td>
<td>0.0215</td>


</tr>


</tbody>


</table>
<blockquote>
<p>结论:批次插入越多,单位时间越少</p>

</blockquote>

</div>

<br><br>作者:baboon<br>链接:https://www.jianshu.com/p/c1ba8c45e6bf<br>来源:简书<br>简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。</div><br><br>
来源:https://www.cnblogs.com/ExMan/p/10951567.html
頁: [1]
查看完整版本: Mongodb 性能测试