在MongoDB中寻找慢查询
以下是從MongoDB日誌中進行慢查詢定位的筆記。
# COLLSCAN(インデックスを使わないフルスキャン)のみ抽出
$ sudo grep "COLLSCAN" <path_to>/mongod.log > stats.txt
# awkとsortで実行時間順(降順)に並び替え、headで上位10件を取得
$ awk '{ print $NF,$0 }' stats.txt | sort -r | head
642ms 2023-02-06T14:35:56.695+0900 *****
261ms 2023-02-06T14:35:57.862+0900 *****
256ms 2023-02-06T14:35:57.860+0900 *****
243ms 2023-02-06T14:35:59.892+0900 *****
234ms 2023-02-06T14:35:56.121+0900 *****
232ms 2023-02-06T14:35:54.101+0900 *****
229ms 2023-02-06T14:35:48.463+0900 *****
218ms 2023-02-06T14:35:56.094+0900 *****
215ms 2023-02-06T14:35:53.985+0900 *****
215ms 2023-02-06T14:35:48.458+0900 *****
在默认设置下,MongoDB只会记录耗时超过100毫秒的查询日志,所以如果要查看耗时在100毫秒以下的查询,需要进行设置修改。