mongodb的慢查询
<p> ####################################</p><h3> 首先,慢查询日志是针对数据库级别的,咱们设置的时候,要先use 数据库,再开启,一定先确定某个数据库再db.setProfilingLevel(2,500) </h3>
<p> </p>
<p> </p>
<div class="cnblogs_code">
<pre># 获取超过0.5秒的慢查询:<br>db.system.profile.find({millis:{$gt:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">500</span>}}) <br><br></pre>
<pre># 获取最新的慢查询:<br>db.system.profile.find().sort({$natural:-1})</pre>
<pre><br><br></pre>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<h3>一、获取慢查询配置:</h3>
<div class="cnblogs_code">
<pre><br>性能分析器Profiling级别参数:</pre>
<ul>
<li>0值:关闭性能分析器,不收集任何数据。mongod总是将时间长于slowOpThresholdMs阀值的操作写入到日志。这是默认的性能分析器级别。</li>
<li>1值:只收集慢操作性能分析数据.默认慢操作是那些操作时间大于100毫米的操作。</li>
<li>2值:收集所有数据库操作的性能分析数据。</li>
</ul>
<pre><span style="color: rgba(0, 0, 0, 1)">##############################################################<br>db.getProfilingStatus()
db.setProfilingLevel(1</span>,<span style="color: rgba(128, 0, 0, 1); font-weight: bold">500</span>)<br><br>db.setProfilingLevel(1,1000) # 相当于1s<br><br>db.setProfilingLevel(0)#关闭慢查询<br><br>db.system.profile.drop()# 删除慢查询集合<br><br>db.createCollection( "system.profile", { capped: true, size:10000000 } )# 重建慢查询集合</pre>
<pre><span>db.setProfilingLevel(2,500) #开启慢查询和配置慢查询阈值</span></pre>
</div>
<p> </p>
<p>具体例子如下:</p>
<div class="cnblogs_code">
<pre>glc<span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span><span style="color: rgba(0, 0, 0, 1)"> db.getProfilingStatus()
{
"was" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">,
"slowms" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">500</span><span style="color: rgba(0, 0, 0, 1)">,
"ratelimit" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"sampleRate" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"operationTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606295083</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"$clusterTime" : {
"clusterTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606295083</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"signature" : {
"hash" : BinData(</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span>,"21NKX80GE0q<span style="color: rgba(128, 128, 128, 1)">/</span>yEV5AJII6XAwctQ<span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)">"),
"keyId" : NumberLong("</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">6856584343653974019</span><span style="color: rgba(0, 0, 0, 1)">")
}
}
}
glc</span><span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span><span style="color: rgba(0, 0, 0, 1)"> db.getProfilingLevel()
</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">
glc</span><span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span> db.setProfilingLevel(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span>,<span style="color: rgba(128, 0, 0, 1); font-weight: bold">500</span><span style="color: rgba(0, 0, 0, 1)">)
{
"was" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">,
"slowms" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">500</span><span style="color: rgba(0, 0, 0, 1)">,
"ratelimit" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"sampleRate" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"ok" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"operationTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606295103</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"$clusterTime" : {
"clusterTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606295103</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"signature" : {
"hash" : BinData(</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span>,"9m9XwRHgd18Ik2AouRUIvh2DFLg<span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)">"),
"keyId" : NumberLong("</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">6856584343653974019</span><span style="color: rgba(0, 0, 0, 1)">")
}
}
}
glc</span><span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span> </pre>
</div>
<p> </p>
<p> </p>
<h3>二、删除慢查询集合:</h3>
<div class="cnblogs_code">
<pre>db.setProfilingLevel(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">)
db.system.profile.</span><span style="color: rgba(0, 0, 255, 1)">drop</span>()</pre>
</div>
<p> </p>
<p>具体例子如下:</p>
<div class="cnblogs_code">
<pre>glc<span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span><span style="color: rgba(0, 0, 0, 1)"> db.getProfilingStatus()
{
"was" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"slowms" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">500</span><span style="color: rgba(0, 0, 0, 1)">,
"ratelimit" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"sampleRate" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"operationTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606294533</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"$clusterTime" : {
"clusterTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606294533</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"signature" : {
"hash" : BinData(</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span>,"UDIIGdRByffSd7zBXbKOocNHVf4<span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)">"),
"keyId" : NumberLong("</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">6856584343653974019</span><span style="color: rgba(0, 0, 0, 1)">")
}
}
}
glc</span><span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span> db.system.profile.<span style="color: rgba(0, 0, 255, 1)">drop</span><span style="color: rgba(0, 0, 0, 1)">()
</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">2020</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">11</span><span style="color: rgba(128, 128, 128, 1)">-</span>25T16:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">55</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">53.233</span><span style="color: rgba(128, 128, 128, 1)">+</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0800</span> E QUERY <span style="color: rgba(255, 0, 0, 1)">[</span><span style="color: rgba(255, 0, 0, 1)">js</span><span style="color: rgba(255, 0, 0, 1)">]</span> Error: <span style="color: rgba(0, 0, 255, 1)">drop</span><span style="color: rgba(0, 0, 0, 1)"> failed: {
"operationTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606294543</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"ok" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">,
"errmsg" : "turn </span><span style="color: rgba(0, 0, 255, 1)">off</span><span style="color: rgba(0, 0, 0, 1)"> profiling before dropping system.profile collection",
"code" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">20</span><span style="color: rgba(0, 0, 0, 1)">,
"codeName" : "IllegalOperation",
"$clusterTime" : {
"clusterTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606294543</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"signature" : {
"hash" : BinData(</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span>,"IS5isA2D6B9TAnEsaW<span style="color: rgba(128, 128, 128, 1)">/</span>SFsfwe<span style="color: rgba(128, 128, 128, 1)">+</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)">"),
"keyId" : NumberLong("</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">6856584343653974019</span><span style="color: rgba(0, 0, 0, 1)">")
}
}
} :
_getErrorWithCode</span><span style="color: rgba(0, 128, 0, 1)">@src</span><span style="color: rgba(128, 128, 128, 1)">/</span>mongo<span style="color: rgba(128, 128, 128, 1)">/</span>shell<span style="color: rgba(128, 128, 128, 1)">/</span>utils.js:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">25</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">13</span><span style="color: rgba(0, 0, 0, 1)">
DBCollection.prototype.</span><span style="color: rgba(0, 0, 255, 1)">drop</span><span style="color: rgba(0, 128, 0, 1)">@src</span><span style="color: rgba(128, 128, 128, 1)">/</span>mongo<span style="color: rgba(128, 128, 128, 1)">/</span>shell<span style="color: rgba(128, 128, 128, 1)">/</span>collection.js:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">707</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">
@(shell):</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1<br><br><br></span><span style="color: rgba(0, 0, 0, 1)">
glc</span><span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span> db.setProfilingLevel(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">)
{
"was" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"slowms" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">500</span><span style="color: rgba(0, 0, 0, 1)">,
"ratelimit" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"sampleRate" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"ok" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"operationTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606294563</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"$clusterTime" : {
"clusterTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606294563</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"signature" : {
"hash" : BinData(</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span>,"NT7TdpDLfjzC37lDMtINsmJvVQ0<span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)">"),
"keyId" : NumberLong("</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">6856584343653974019</span><span style="color: rgba(0, 0, 0, 1)">")
}
}
}
glc</span><span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span> db.system.profile.<span style="color: rgba(0, 0, 255, 1)">drop</span><span style="color: rgba(0, 0, 0, 1)">()
true
glc</span><span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span> </pre>
</div>
<p> </p>
<h3> 三、创建慢查询集合:</h3>
<div class="cnblogs_code">
<pre>db.createCollection("system.profile", {size: <span style="color: rgba(128, 0, 0, 1); font-weight: bold">40000000</span>, capped: true})</pre>
</div>
<p> </p>
<p>具体例子如下:</p>
<div class="cnblogs_code">
<pre>glc<span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span><span style="color: rgba(0, 0, 0, 1)"> show tables;
glc</span><span style="color: rgba(0, 0, 0, 1)">
glc</span><span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span> db.createCollection("system.profile", {size: <span style="color: rgba(128, 0, 0, 1); font-weight: bold">40000000</span><span style="color: rgba(0, 0, 0, 1)">, capped: true})
{
"ok" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"operationTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606294983</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"$clusterTime" : {
"clusterTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1606294983</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">),
"signature" : {
"hash" : BinData(</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span>,"vXiMidZUy7pXCg2t8Zvj4zgsO4E<span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)">"),
"keyId" : NumberLong("</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">6856584343653974019</span><span style="color: rgba(0, 0, 0, 1)">")
}
}
}
glc</span><span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span><span style="color: rgba(0, 0, 0, 1)"> show tables;
glc
system.profile</span><span style="color: rgba(0, 0, 0, 1)">
glc</span><span style="color: rgba(128, 128, 128, 1)">-</span>test:<span style="color: rgba(0, 0, 255, 1)">PRIMARY</span><span style="color: rgba(128, 128, 128, 1)">></span> </pre>
</div>
<p> </p>
<p> </p>
<p> </p>
<h3> 解读 db.system.profile.find().pretty():</h3>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> </span></pre>
<pre><span># "op" : "query",表示操作的类型,代表了该慢日志的种类是什么,是查询、插入、更新、删除还是其他。主要有:</span></pre>
<ol>
<li>insert</li>
<li>query</li>
<li>update</li>
<li>remove</li>
<li>getmore</li>
<li>command</li>
</ol>
<pre><span># "ns" : "igoodful.log<span>" :表示该慢日志是哪个库下的哪个集合所对应的慢日志。</span></span></pre>
<pre><span style="color: rgba(0, 0, 0, 1)"># system.profile.nreturned :该操作最终返回文档的数量;</span></pre>
<p> # system.profile.responseLength :结果返回的大小,单位为bytes,该值如果过大,则需考虑limit()等方式减少输出结果;</p>
<p># system.profile.millis :该操作从开始到结束耗时多少,单位为毫秒;</p>
<p><span># system.profile.execStats :包含了一些该操作的统计信息,只有query类型的才会显示此项,包含查询操作的执行统计信息的文档。对于其他操作,该值为空文档。</span></p>
<p><span># </span>system.profile.execStats.stage :查询类型</p>
<pre></pre>
<ol>
<li><code class="docutils literal">COLLSCAN</code><span> 用于收集扫描</span></li>
<li><code class="docutils literal">IXSCAN</code><span> 用于扫描索引键</span></li>
<li><code class="docutils literal">FETCH</code><span> 用于检索文件</span></li>
</ol>
<pre></pre>
<p># system.profile.ts :该操作执行时的时间</p>
<p># system.profile.locks: 全局、库、表的锁使用情况</p>
<p><span># system.profile.PlanSummary:索引使用情况,有:</span></p>
<p> </p>
<ol>
<li>collscan —— 全表扫描</li>
<li>ixscan —— 索引扫描</li>
<li>idhack —— 使用了默认的_id索引</li>
<li>fetch —— 根据索引去检索某一个文档</li>
<li>shard_metge —— 将各个分片的返回数据进行聚合</li>
<li>sharding_filter —— 通过mongos对分片数据进行查询</li>
</ol>
<p> </p>
<p><span># system.profile.numYield:让出锁</span></p>
<p><span># system.profile.client :哪个客户端发起的该操作,并显示出该客户端的ip或hostname</span></p>
<p><span># system.profile.client :</span></p>
<p><span># system.profile.client :</span></p>
<p><span># system.profile.client :</span></p>
<p><span># system.profile.client :</span></p>
<p> </p>
<pre><em id="__mceDel"><span style="color: rgba(0, 0, 0, 1)"><br><br><br></span></em><span style="color: rgba(0, 0, 0, 1)">{
"op" : "query",
"ns" : "igoodful.</span><span style="color: rgba(255, 0, 255, 1)">log</span><span style="color: rgba(0, 0, 0, 1)">",
"command" : {
"find" : "</span><span style="color: rgba(255, 0, 255, 1)">log</span><span style="color: rgba(0, 0, 0, 1)">",
"filter" : {
},
"sort" : {
"t" : </span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">
},
"limit" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"lsid" : {
"id" : UUID("832477ad</span><span style="color: rgba(128, 128, 128, 1)">-</span>a7e6<span style="color: rgba(128, 128, 128, 1)">-</span>4bfc<span style="color: rgba(128, 128, 128, 1)">-</span>9f2b<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 0, 1)">4b04538d77f3")
},
"$clusterTime" : {
"clusterTime" : </span><span style="color: rgba(0, 0, 255, 1)">Timestamp</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1611211743</span>, <span style="color: rgba(128, 0, 0, 1); font-weight: bold">4</span><span style="color: rgba(0, 0, 0, 1)">),
"signature" : {
"hash" : BinData(</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span>,"bWjbtJwf0mD9oImjMxc1JTIElOk<span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)">"),
"keyId" : NumberLong("</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">6908999957030633474</span><span style="color: rgba(0, 0, 0, 1)">")
}
},
"$db" : "igoodful",
"$readPreference" : {
"mode" : "</span><span style="color: rgba(0, 0, 255, 1)">primary</span><span style="color: rgba(0, 0, 0, 1)">"
}
},
"keysExamined" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">,
"docsExamined" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">173829</span><span style="color: rgba(0, 0, 0, 1)">,
"hasSortStage" : true,
"cursorExhausted" : true,
"numYield" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1358</span><span style="color: rgba(0, 0, 0, 1)">,
"nreturned" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"locks" : {
"Global" : {
"acquireCount" : {
"r" : NumberLong(</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1361</span><span style="color: rgba(0, 0, 0, 1)">)
}
},
"</span><span style="color: rgba(0, 0, 255, 1)">Database</span><span style="color: rgba(0, 0, 0, 1)">" : {
"acquireCount" : {
"r" : NumberLong(</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1359</span><span style="color: rgba(0, 0, 0, 1)">)
}
},
"Collection" : {
"acquireCount" : {
"r" : NumberLong(</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1359</span><span style="color: rgba(0, 0, 0, 1)">)
}
}
},
"storage" : {
},
"responseLength" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1005</span><span style="color: rgba(0, 0, 0, 1)">,
"protocol" : "op_msg",
"millis" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">669</span><span style="color: rgba(0, 0, 0, 1)">,
"rateLimit" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"planSummary" : "COLLSCAN",
"execStats" : {
"stage" : "SORT",
"nReturned" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"executionTimeMillisEstimate" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">77</span><span style="color: rgba(0, 0, 0, 1)">,
"works" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">173834</span><span style="color: rgba(0, 0, 0, 1)">,
"advanced" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"needTime" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">173832</span><span style="color: rgba(0, 0, 0, 1)">,
"needYield" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">,
"saveState" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1358</span><span style="color: rgba(0, 0, 0, 1)">,
"restoreState" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1358</span><span style="color: rgba(0, 0, 0, 1)">,
"isEOF" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"invalidates" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">,
"sortPattern" : {
"t" : </span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">
},
"memUsage" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">782</span><span style="color: rgba(0, 0, 0, 1)">,
"memLimit" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">33554432</span><span style="color: rgba(0, 0, 0, 1)">,
"limitAmount" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"inputStage" : {
"stage" : "SORT_KEY_GENERATOR",
"nReturned" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">173829</span><span style="color: rgba(0, 0, 0, 1)">,
"executionTimeMillisEstimate" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">35</span><span style="color: rgba(0, 0, 0, 1)">,
"works" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">173832</span><span style="color: rgba(0, 0, 0, 1)">,
"advanced" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">173829</span><span style="color: rgba(0, 0, 0, 1)">,
"needTime" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span><span style="color: rgba(0, 0, 0, 1)">,
"needYield" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">,
"saveState" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1358</span><span style="color: rgba(0, 0, 0, 1)">,
"restoreState" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1358</span><span style="color: rgba(0, 0, 0, 1)">,
"isEOF" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"invalidates" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">,
"inputStage" : {
"stage" : "COLLSCAN",
"nReturned" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">173829</span><span style="color: rgba(0, 0, 0, 1)">,
"executionTimeMillisEstimate" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">15</span><span style="color: rgba(0, 0, 0, 1)">,
"works" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">173831</span><span style="color: rgba(0, 0, 0, 1)">,
"advanced" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">173829</span><span style="color: rgba(0, 0, 0, 1)">,
"needTime" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"needYield" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">,
"saveState" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1358</span><span style="color: rgba(0, 0, 0, 1)">,
"restoreState" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1358</span><span style="color: rgba(0, 0, 0, 1)">,
"isEOF" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span><span style="color: rgba(0, 0, 0, 1)">,
"invalidates" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span><span style="color: rgba(0, 0, 0, 1)">,
"direction" : "forward",
"docsExamined" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">173829</span><span style="color: rgba(0, 0, 0, 1)">
}
}
},
"ts" : ISODate("</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">2021</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">01</span><span style="color: rgba(128, 128, 128, 1)">-</span>21T06:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">49</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">04</span><span style="color: rgba(0, 0, 0, 1)">.415Z"),
"client" : "</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">10.10</span>.10<span style="color: rgba(128, 0, 0, 1); font-weight: bold">.11</span><span style="color: rgba(0, 0, 0, 1)">",
"allUsers" : </span><span style="color: rgba(255, 0, 0, 1)">[</span><span style="color: rgba(255, 0, 0, 1)">
{
"user" : "igoodful_wr",
"db" : "admin"
}
</span><span style="color: rgba(255, 0, 0, 1)">]</span><span style="color: rgba(0, 0, 0, 1)">,
"</span><span style="color: rgba(255, 0, 255, 1)">user</span>" : "igoodful_wr<span style="color: rgba(0, 128, 0, 1)">@admin</span><span style="color: rgba(0, 0, 0, 1)">"
}</span></pre>
</div>
<p> </p>
<p> </p>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
"</span><span style="color: rgba(0, 0, 255, 1)">timestamp</span>": "Thu Apr<span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">07</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">51</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">50.985</span>"<span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 日期和时间, ISO8601格式
"severityLevel": "I"</span><span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 日志级别 I代表info的意思,其他的还有F,E,W,D等
"components": "COMMAND"</span><span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)">组件类别,不同组件打印出的日志带不同的标签,便于日志分类
"namespace": "animal.MongoUser_58"</span><span style="color: rgba(128, 128, 128, 1)">//</span>查询的命名空间,即<span style="color: rgba(128, 128, 128, 1)"><</span>databse.collection<span style="color: rgba(128, 128, 128, 1)">></span><span style="color: rgba(0, 0, 0, 1)">
"operation": "find" </span><span style="color: rgba(128, 128, 128, 1)">//</span>操作类别,可能是<span style="color: rgba(255, 0, 0, 1)">[</span><span style="color: rgba(255, 0, 0, 1)">find,insert,update,remove,getmore,command</span><span style="color: rgba(255, 0, 0, 1)">]</span><span style="color: rgba(0, 0, 0, 1)">
"command": { find: "MongoUser_58", filter: { $</span><span style="color: rgba(128, 128, 128, 1)">and</span>: <span style="color: rgba(255, 0, 0, 1)">[</span><span style="color: rgba(255, 0, 0, 1)"> { lld: { $gte: 18351 } }, { fc: { $lt: 120 } }, { _id: { $nin: </span> } }, <br>{ $<span style="color: rgba(128, 128, 128, 1)">or</span>: <span style="color: rgba(255, 0, 0, 1)">[</span><span style="color: rgba(255, 0, 0, 1)"> { rc: { $exists: false } }, { rc: { $lte: 1835400100 } } </span><span style="color: rgba(255, 0, 0, 1)">]</span> }, { lv: { $gte: <span style="color: rgba(128, 0, 0, 1); font-weight: bold">69</span> } }, { lv: { $lte: <span style="color: rgba(128, 0, 0, 1); font-weight: bold">99</span> } }, <br>{ cc: { $<span style="color: rgba(128, 128, 128, 1)">in</span>: <span style="color: rgba(255, 0, 0, 1)">[</span><span style="color: rgba(255, 0, 0, 1)"> 440512, 440513, 440514, 440500, 440515, 440511, 440523, 440507 </span><span style="color: rgba(255, 0, 0, 1)">]</span> } } ] }, limit: <span style="color: rgba(128, 0, 0, 1); font-weight: bold">30</span> } <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)">具体的操作命令细节
"planSummary": "IXSCAN { lv: </span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> }", <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 命令执行计划的简要说明,当前使用了 lv 这个字段的索引。如果是全表扫描,则是COLLSCAN
"keysExamined": </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">20856</span>, <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 该项表明为了找出最终结果MongoDB搜索了索引中的多少个key
"docsExamined": </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">20856</span>, <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 该项表明为了找出最终结果MongoDB搜索了多少个文档
"cursorExhausted": </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span>, <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 该项表明本次查询中游标耗尽的次数
"keyUpdates":</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span>,<span style="color: rgba(128, 128, 128, 1)">//</span> 该项表名有多少个index key在该操作中被更改,更改索引键也会有少量的性能消耗,因为数据库不单单要删除旧Key,还要插入新的Key到B<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 0, 1)">Tree索引中
"writeConflicts":</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span>, <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 写冲突发生的数量,例如update一个正在被别的update操作的文档
"numYields":</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">6801</span>, <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 为了让别的操作完成而屈服的次数,一般发生在需要访问的数据尚未被完全读取到内存中,MongoDB会优先完成在内存中的操作
"nreturned":</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">0</span>, <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 该操作最终返回文档的数量
"reslen":</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">110</span>, <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 结果返回的大小,单位为bytes,该值如果过大,则需考虑limit()等方式减少输出结果
"locks": { </span><span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 在操作中产生的锁,锁的种类有多种,如下
Global: { acquireCount: { r: </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">13604</span> } }, <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)">具体每一种锁请求锁的次数
</span><span style="color: rgba(0, 0, 255, 1)">Database</span>: { acquireCount: { r: <span style="color: rgba(128, 0, 0, 1); font-weight: bold">6802</span><span style="color: rgba(0, 0, 0, 1)"> } },
Collection: { acquireCount: { r: </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">6802</span><span style="color: rgba(0, 0, 0, 1)"> } }
},
"protocol": "op_command", </span><span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)">消息的协议
"millis" : </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">69132</span>, <span style="color: rgba(128, 128, 128, 1)">//</span><span style="color: rgba(0, 0, 0, 1)"> 从 MongoDB 操作开始到结束耗费的时间,单位为ms
}</span></pre>
</div>
<p> </p>
<p> </p>
<h3> 解读db.currentOp():</h3>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>#################################################</p>
</div>
<div id="MySignature" role="contentinfo">
igoodful@qq.com<br><br>
来源:https://www.cnblogs.com/igoodful/p/13955370.html
頁:
[1]