MongoDB優化(三) ---- system profile


前面兩章記錄如何修改默認的配置和索引調優的策略,本章將介紹mongo自帶的分析工具profiling

准備工作

啟動mongoDB切換至需要的庫

./mongo  --username xx  --password xx  --port xx  --authenticationDatabase xxx

> use IDP2

 

 查看當前的profile等級

> db.getProfilingLevel()
0

返回 0  代表當前沒有設置profiling等級。

 

關於等級官方有解釋,傳送門:https://docs.mongodb.com/manual/reference/method/db.setProfilingLevel/ 

這里簡單解釋一下一共有 0, 1, 2三個等級,

默認等級是0,代表關閉

等級1,如果設置了時間則會記錄比設置時間慢的請求,無設置則默認慢查詢100ms

等級2,記錄所有的查詢請求

 

這里查詢過濾100ms以上的請求來觀察

> db.setProfilingLevel(1,100)
{ "was" : 0, "slowms" : 100, "ok" : 1 }

 

接下來就可以開始性能請求操作了

操作完成后,我們需要先關閉掉profiling再做操作,避免因為手工操作引起的記錄

> db.setProfilingLevel(0)
{ "was" : 1, "slowms" : 100, "ok" : 1 }

> db.system.profile.count()
992

可以看到一共記錄了992條數據,再查看詳細的數據都是操作了什么很慢。

> db.system.profile.find({}, {ns:1,op:1,millis:1,query:1})
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 165 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 188 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 172 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 190 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 161 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 157 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 160 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 151 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 140 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 132 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 133 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 107 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 119 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 126 }
{ "op" : "query", "ns" : "IDP2.OrganizationUnit", "query" : { "find" : "OrganizationUnit", "filter" : { "archived" : false, "externalId" : "OU0 992164adf79adf35b7ab795565d736a627b4zz74clb", "enterpriseUuid" : "5beed120546802f0a35fff3998eae8fa8JzyFIiIHxt" }, "ntoreturn" : -1 }, "millis" : 149 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 219 }
{ "op" : "query", "ns" : "IDP2.OrganizationUnit", "query" : { "find" : "OrganizationUnit", "filter" : { "_id" : "zjs_3_1353", "enterpriseUuid" : "5beed120546802f0a35fff3998eae8fa8JzyFIiIHxt" }, "ntoreturn" : -1 }, "millis" : 145 }
{ "op" : "query", "ns" : "IDP2.OrganizationUnit", "query" : { "find" : "OrganizationUnit", "filter" : { "archived" : false, "enterpriseUuid" : "5beed120546802f0a35fff3998eae8fa8JzyFIiIHxt", "rootNode" : true }, "ntoreturn" : -1 }, "millis" : 150 }
{ "op" : "insert", "ns" : "IDP2.SessionEnterpriseUser", "millis" : 103 }
{ "op" : "query", "ns" : "IDP2.ApplicationInformation", "query" : { "find" : "ApplicationInformation", "filter" : { "archived" : false, "applicationUuid" : "2a4a8b5fd24e77907d0938a5db8d8352NcfqwsKNOoy", "enterpriseId" : "cs5" }, "ntoreturn" : -1 }, "millis" : 171 }
Type "it" for more
> it
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitUDGroup", "millis" : 105 }
{ "op" : "insert", "ns" : "IDP2.AuditLog", "millis" : 130 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnit", "millis" : 123 }
{ "op" : "insert", "ns" : "IDP2.OrganizationUnitOU", "millis" : 115 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 135 }
{ "op" : "query", "ns" : "IDP2.PSMemberRole", "query" : { "find" : "PSMemberRole", "filter" : { "memberUuid" : "0ffd3ff5f9ebc6107968ebe5150cffdbxiZj1vfaG1I" } }, "millis" : 115 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 294 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 202 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 159 }
{ "op" : "insert", "ns" : "IDP2.AuditLog", "millis" : 162 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 157 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 141 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 238 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 328 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 131 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 308 }
{ "op" : "update", "ns" : "IDP2.OrganizationUnit", "query" : { "_id" : "f90263c56f5257226f0e28e25f5f6198Wb1GsbgeuLe" }, "millis" : 169 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 218 }
{ "op" : "query", "ns" : "IDP2.ApplicationInformation", "query" : { "find" : "ApplicationInformation", "filter" : { "applicationUuid" : "2a4a8b5fd24e77907d0938a5db8d8352NcfqwsKNOoy", "enterpriseId" : "cs5" }, "ntoreturn" : -1 }, "millis" : 120 }
{ "op" : "insert", "ns" : "IDP2.UDGroup", "millis" : 140 }
Type "it" for more

可以通過繼續輸入 “it”來查看更多。

{ "op" : "insert",   --- 操作是插入
"ns" : "IDP2.UDGroup", ---- 表是UGGroup
"millis" : 140 } ---- 花費時間是140ms

接下來就根據不同的操作查看表是不是建立了合理的索引,如果沒有則對索引進行修改即可。

當我們分析完成以后通過
db.system.profile.drop() 

來清空這些捕捉到的數據,清空之前需要先關閉profiling。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM