explain()
类别
SdbQuery
描述
获取查询的访问计划。
options 参数详细说明如下:
普通的访问计划
Detail 选项为 false 时,将会展示普通的访问计划。
垂直分区中主表的访问计划信息:
垂直分区中子表的访问计划信息:
详细的访问计划
Detail 选项为 true 时,将会展示详细的访问计划。在协调节点和数据节点上展示的详细访问计划略有不同。
Search 选项为 true 时,将会展示查询优化器搜索过的访问计划,并查看查询优化器选择的结果。
请参考:。
返回值
返回访问计划的游标,类型为 object 。
错误
如果出错则抛异常,并输出错误信息,可以通过getLastErrMsg()获取错误信息或通过获取错误码。关于错误处理可以参考常见错误处理指南。
- 普通表的访问计划
- 垂直分区的访问计划
- {
- "NodeName": "hostname:11830",
- "GroupName": "group",
- "Role": "data",
- "Name": "maincs.maincl",
- "SubCollections": [
- {
- "Name": "subcs.subcl1",
- "ScanType": "tbscan",
- "IndexName": "",
- "UseExtSort": false,
- "Query": {
- "$and": []
- },
- "IXBound": null,
- "NeedMatch": false,
- "ReturnNum": 0,
- "ElapsedTime": 0.000088,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0
- },
- {
- "Name": "subcs.subcl2",
- "ScanType": "tbscan",
- "IndexName": "",
- "UseExtSort": false,
- "Query": {
- "$and": []
- },
- "IXBound": null,
- "NeedMatch": false,
- "ReturnNum": 0,
- "ElapsedTime": 0.000089,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0
- }
- ]
- }
- 协调节点上的虚拟访问计划,即匹配符不能命中任何分区
- {
- "NodeName": "hostname:11810",
- "GroupName": "SYSCoord",
- "Role": "coord",
- "Collection": "maincs.maincl",
- "Query": {
- "a": 10000000
- },
- }
- 查看查询的普通访问计划,并使用 Run 选项执行查询
- 使用 Detail 选项查看查询的详细访问计划
- > db.foo.bar.find( { a : { $gt : 100 } } ).explain( { Detail : true } )
- {
- "NodeName": "hostname:11800",
- "GroupName": "SYSCoord",
- "Role": "coord",
- "Collection": "foo.bar",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 0,
- "ReturnNum": 0,
- "ElapsedTime": 0.00123,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "PlanPath": {
- "Operator": "COORD-MERGE",
- "Sort": {},
- "NeedReorder": false,
- "DataNodeNum": 2,
- "DataNodeList": [
- {
- "Name": "hostname:11810",
- "EstTotalCost": 1.484
- },
- {
- "Name": "hostname:11820",
- "EstTotalCost": 0.7418349999999999
- }
- ],
- "Selector": {},
- "Skip": 0,
- "Return": -1,
- "Estimate": {
- "StartCost": 0,
- "RunCost": 1.5214865,
- "TotalCost": 1.5214865,
- "Output": {
- "Records": 74973,
- "RecordSize": 29,
- "Sorted": false
- }
- },
- "ChildOperators": [
- {
- "NodeName": "hostname:11810",
- "GroupName": "group1",
- "Role": "data",
- "Collection": "foo.bar",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 0,
- "ElapsedTime": 0.000078,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "CacheStatus": "HitCache",
- "MainCLPlan": false,
- "CacheLevel": "OPT_PLAN_PARAMETERIZED",
- "Parameters": [
- 100
- ],
- "MatchConfig": {
- "EnableMixCmp": false,
- "Parameterized": true,
- "FuzzyOptr": false
- }
- },
- {
- "NodeName": "hostname:11820",
- "GroupName": "group2",
- "Role": "data",
- "Collection": "foo.bar",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 0,
- "ElapsedTime": 0.000081,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "CacheStatus": "HitCache",
- "MainCLPlan": false,
- "CacheLevel": "OPT_PLAN_PARAMETERIZED",
- "Parameters": [
- 100
- ],
- "MatchConfig": {
- "EnableMixCmp": false,
- "Parameterized": true,
- "FuzzyOptr": false
- }
- }
- ]
- }
- }
- 使用 Detail 选项查看查询的详细访问计划,并使用 Run 选项执行查询
- > db.foo.bar.find( { a : { $gt : 100 } } ).explain( { Detail : true, Run : true } )
- {
- "NodeName": "hostname:11800",
- "GroupName": "SYSCoord",
- "Role": "coord",
- "Collection": "foo.bar",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 0,
- "ReturnNum": 99899,
- "ElapsedTime": 0.82863,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0.01999999999999999,
- "SysCPU": 0.009999999999999995,
- "PlanPath": {
- "Operator": "COORD-MERGE",
- "Sort": {},
- "NeedReorder": false,
- "DataNodeNum": 2,
- "DataNodeList": [
- {
- "Name": "hostname:11820",
- "EstTotalCost": 0.7418349999999999,
- "QueryTimeSpent": 0.733299,
- "WaitTimeSpent": 0.013556
- },
- {
- "Name": "hostname:11810",
- "EstTotalCost": 1.484,
- "QueryTimeSpent": 0.82677,
- "WaitTimeSpent": 0.084652
- }
- ],
- "Selector": {},
- "Skip": 0,
- "Return": -1,
- "Estimate": {
- "StartCost": 0,
- "RunCost": 1.5214865,
- "TotalCost": 1.5214865,
- "Output": {
- "Records": 74973,
- "RecordSize": 29,
- "Sorted": false
- }
- },
- "Run": {
- "ContextID": 29314,
- "StartTimestamp": "2017-12-14-15.24.51.254623",
- "QueryTimeSpent": 0.821182,
- "GetMores": 112,
- "ReturnNum": 99899,
- "WaitTimeSpent": 0.075
- },
- "ChildOperators": [
- {
- "NodeName": "hostname:11820",
- "GroupName": "group2",
- "Role": "data",
- "Collection": "foo.bar",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 49892,
- "ElapsedTime": 0.733493,
- "IndexRead": 0,
- "DataRead": 49945,
- "UserCPU": 0.14,
- "SysCPU": 0.01000000000000001,
- "CacheStatus": "HitCache",
- "MainCLPlan": false,
- "CacheLevel": "OPT_PLAN_PARAMETERIZED",
- 100
- ],
- "MatchConfig": {
- "EnableMixCmp": false,
- "Parameterized": true,
- "FuzzyOptr": false
- }
- },
- {
- "NodeName": "hostname:11810",
- "GroupName": "group1",
- "Role": "data",
- "Collection": "foo.bar",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 50007,
- "ElapsedTime": 0.82666,
- "IndexRead": 0,
- "DataRead": 50055,
- "UserCPU": 0.1499999999999986,
- "SysCPU": 0.01000000000000023,
- "CacheStatus": "HitCache",
- "MainCLPlan": false,
- "CacheLevel": "OPT_PLAN_PARAMETERIZED",
- "Parameters": [
- 100
- ],
- "MatchConfig": {
- "EnableMixCmp": false,
- "Parameterized": true,
- "FuzzyOptr": false
- }
- }
- ]
- }
- }
- 使用 Detail 选项查看查询的详细访问计划,并且使用 Search 选项查看查询优化器的搜索过程
- 使用 Detail 选项查看查询的详细访问计划,并且使用 Location 选项查看查询在 group1 上的访问计划
- > db.foo.bar.find( { a : { $gt : 100 } } ).explain( { Detail : true, Location : { GroupName : 'group1' } } )
- {
- "NodeName": "hostname:11800",
- "GroupName": "SYSCoord",
- "Role": "coord",
- "Collection": "foo.bar",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 0,
- "ReturnNum": 0,
- "ElapsedTime": 0.011374,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "PlanPath": {
- "Operator": "COORD-MERGE",
- "Sort": {},
- "NeedReorder": false,
- "DataNodeNum": 2,
- "DataNodeList": [
- {
- "Name": "hostname:11810",
- "EstTotalCost": 1.484
- },
- {
- "Name": "hostname:11820",
- "EstTotalCost": 0.7418349999999999
- }
- ],
- "Selector": {},
- "Skip": 0,
- "Return": -1,
- "Estimate": {
- "StartCost": 0,
- "RunCost": 1.5214865,
- "TotalCost": 1.5214865,
- "Output": {
- "Records": 74973,
- "RecordSize": 29,
- "Sorted": false
- }
- },
- "ChildOperators": [
- {
- "NodeName": "hostname:11810",
- "GroupName": "group1",
- "Role": "data",
- "Collection": "foo.bar",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 0,
- "ElapsedTime": 0.000088,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "CacheStatus": "HitCache",
- "MainCLPlan": false,
- "CacheLevel": "OPT_PLAN_PARAMETERIZED",
- "Parameters": [
- 100
- ],
- "MatchConfig": {
- "EnableMixCmp": false,
- "Parameterized": true,
- "FuzzyOptr": false
- }
- }
- ]
- }
- }
- 使用 Detail 选项查看垂直分区的详细访问计划,并使用 Expand 选项展开所有细节
- > db.maincs.maincl.find( { a : { $gt : 100 } } ).explain( { Detail : true, Expand : true } )
- {
- "NodeName": "hostname:11800",
- "GroupName": "SYSCoord",
- "Role": "coord",
- "Collection": "maincs.maincl",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 0,
- "ReturnNum": 0,
- "ElapsedTime": 0.002748,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "PlanPath": {
- "Operator": "COORD-MERGE",
- "Sort": {},
- "NeedReorder": false,
- "DataNodeNum": 2,
- "DataNodeList": [
- {
- "Name": "hostname:11810",
- "EstTotalCost": 0.9624999999999999
- },
- {
- "Name": "hostname:11820",
- "EstTotalCost": 0.9624999999999999
- }
- ],
- "Selector": {},
- "Skip": 0,
- "Return": -1,
- "Estimate": {
- "StartCost": 0,
- "RunCost": 0.9874999999999999,
- "TotalCost": 0.9874999999999999,
- "Output": {
- "Records": 50000,
- "RecordSize": 43,
- "Sorted": false
- }
- },
- "ChildOperators": [
- {
- "NodeName": "hostname:11810",
- "GroupName": "group1",
- "Role": "data",
- "Collection": "maincs.maincl",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 0,
- "ElapsedTime": 0.00062,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "PlanPath": {
- "Operator": "MERGE",
- "Sort": {},
- "NeedReorder": false,
- "SubCollectionNum": 2,
- "SubCollectionList": [
- {
- "Name": "subcs.subcl2",
- "EstTotalCost": 0.475
- },
- {
- "Name": "subcs.subcl1",
- "EstTotalCost": 0.475
- }
- ],
- "Selector": {},
- "Skip": 0,
- "Return": -1,
- "Estimate": {
- "StartCost": 0,
- "RunCost": 0.9624999999999999,
- "TotalCost": 0.9624999999999999,
- "Output": {
- "Records": 25000,
- "RecordSize": 43,
- "Sorted": false
- }
- },
- "SubCollections": [
- {
- "Collection": "subcs.subcl2",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 0,
- "ElapsedTime": 0.000042,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "CacheStatus": "HitCache",
- "MainCLPlan": true,
- "CacheLevel": "OPT_PLAN_PARAMETERIZED",
- "Parameters": [
- 100
- ],
- "MatchConfig": {
- "EnableMixCmp": false,
- "Parameterized": true,
- "FuzzyOptr": false
- },
- "PlanPath": {
- "Operator": "TBSCAN",
- "Collection": "subcs.subcl2",
- "Query": {
- "$and": [
- {
- "a": {
- "$gt": 100
- }
- }
- ]
- "Selector": {},
- "Skip": 0,
- "Return": -1,
- "Estimate": {
- "StartCost": 0,
- "RunCost": 0.475,
- "TotalCost": 0.475,
- "CLEstFromStat": false,
- "Input": {
- "Pages": 25,
- "Records": 25000,
- "RecordSize": 43
- },
- "Filter": {
- "MthSelectivity": 0.4999994999999995
- },
- "Output": {
- "Records": 12500,
- "RecordSize": 43,
- "Sorted": false
- }
- }
- }
- },
- {
- "Collection": "subcs.subcl1",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 0,
- "ElapsedTime": 0.000049,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "CacheStatus": "HitCache",
- "MainCLPlan": true,
- "CacheLevel": "OPT_PLAN_PARAMETERIZED",
- "Parameters": [
- 100
- ],
- "MatchConfig": {
- "EnableMixCmp": false,
- "Parameterized": true,
- "FuzzyOptr": false
- },
- "PlanPath": {
- "Operator": "TBSCAN",
- "Collection": "subcs.subcl1",
- "Query": {
- "$and": [
- {
- "a": {
- "$gt": 100
- }
- }
- ]
- },
- "Selector": {},
- "Skip": 0,
- "Return": -1,
- "Estimate": {
- "StartCost": 0,
- "RunCost": 0.475,
- "TotalCost": 0.475,
- "CLEstFromStat": false,
- "Input": {
- "Pages": 25,
- "Records": 25000,
- "RecordSize": 43
- },
- "Filter": {
- "MthSelectivity": 0.4999994999999995
- },
- "Output": {
- "Records": 12500,
- "RecordSize": 43,
- "Sorted": false
- }
- }
- }
- }
- ]
- }
- },
- {
- "NodeName": "hostname:11820",
- "GroupName": "group2",
- "Role": "data",
- "Collection": "maincs.maincl",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 0,
- "ElapsedTime": 0.00067,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "PlanPath": {
- "Operator": "MERGE",
- "Sort": {},
- "NeedReorder": false,
- "SubCollectionNum": 2,
- "SubCollectionList": [
- {
- "Name": "subcs.subcl2",
- "EstTotalCost": 0.475
- },
- {
- "Name": "subcs.subcl1",
- "EstTotalCost": 0.475
- }
- ],
- "Selector": {},
- "Skip": 0,
- "Return": -1,
- "Estimate": {
- "StartCost": 0,
- "RunCost": 0.9624999999999999,
- "TotalCost": 0.9624999999999999,
- "Output": {
- "Records": 25000,
- "RecordSize": 43,
- "Sorted": false
- }
- },
- "SubCollections": [
- {
- "Collection": "subcs.subcl2",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 0,
- "ElapsedTime": 0.000034,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "CacheStatus": "HitCache",
- "MainCLPlan": true,
- "CacheLevel": "OPT_PLAN_PARAMETERIZED",
- "Parameters": [
- 100
- ],
- "MatchConfig": {
- "EnableMixCmp": false,
- "Parameterized": true,
- "FuzzyOptr": false
- },
- "PlanPath": {
- "Operator": "TBSCAN",
- "Collection": "subcs.subcl2",
- "Query": {
- "$and": [
- {
- "a": {
- "$gt": 100
- }
- }
- ]
- },
- "Selector": {},
- "Skip": 0,
- "Return": -1,
- "Estimate": {
- "StartCost": 0,
- "RunCost": 0.475,
- "TotalCost": 0.475,
- "CLEstFromStat": false,
- "Input": {
- "Pages": 25,
- "Records": 25000,
- "RecordSize": 43
- },
- "Filter": {
- "MthSelectivity": 0.4999994999999995
- },
- "Output": {
- "Records": 12500,
- "RecordSize": 43,
- "Sorted": false
- }
- }
- }
- },
- {
- "Collection": "subcs.subcl1",
- "Query": {
- "a": {
- "$gt": 100
- }
- },
- "Sort": {},
- "Selector": {},
- "Hint": {},
- "Skip": 0,
- "Return": -1,
- "Flag": 2048,
- "ReturnNum": 0,
- "ElapsedTime": 0.000048,
- "IndexRead": 0,
- "DataRead": 0,
- "UserCPU": 0,
- "SysCPU": 0,
- "CacheStatus": "HitCache",
- "MainCLPlan": true,
- "CacheLevel": "OPT_PLAN_PARAMETERIZED",
- "Parameters": [
- 100
- ],
- "MatchConfig": {
- "EnableMixCmp": false,
- "Parameterized": true,
- "FuzzyOptr": false
- },
- "PlanPath": {
- "Operator": "TBSCAN",
- "Collection": "subcs.subcl1",
- "Query": {
- "$and": [
- {
- "a": {
- "$gt": 100
- }
- }
- ]
- },
- "Selector": {},
- "Skip": 0,
- "Return": -1,
- "Estimate": {
- "StartCost": 0,
- "RunCost": 0.475,
- "TotalCost": 0.475,
- "CLEstFromStat": false,
- "Input": {
- "Pages": 25,
- "Records": 25000,
- "RecordSize": 43
- },
- "Filter": {
- "MthSelectivity": 0.4999994999999995
- },
- "Output": {
- "Records": 12500,
- "RecordSize": 43,
- "Sorted": false
- }
- }
- }
- }
- ]
- }
- }
- ]
- }