数据节点上的详细访问计划包括以下内容:
- 数据节点上的访问计划信息
- 访问计划的缓存使用情况
- 涉及的垂直分区中主子表的访问计划信息
主表的详细访问计划
主表的详细访问计划结构如下:
{
{ 主表的访问计划信息 },
"PlanPath": {
"Operator": "MERGE",
{ 主表查询上下文的访问计划信息 },
"ChildOperators": [
{
{ 子表的访问计划信息 },
...
},
...
]
}
}
Copy
主表访问计划包括以下信息:
字段名 | 类型 | 描述 |
---|---|---|
NodeName | 字符串 | 访问计划所在的节点的名称 |
GroupName | 字符串 | 访问计划所在的节点属于的复制组的名称 |
Role | 字符串 | 访问计划所在的节点的角色,"data" 表示协调节点 |
Collection | 字符串 | 访问计划访问的集合的名称 |
Query | BSON 对象 | 访问计划解析后的用户查询条件 |
Sort | BSON 对象 | 访问计划中的排序字段 |
Selector | BSON 对象 | 访问计划执行的选择符 |
Hint | BSON 对象 | 访问计划中指定查询使用索引的情况 |
Skip | 长整型 | 访问计划需要跳过的记录个数 |
Return | 长整型 | 访问计划最多返回的记录个数 |
Flag | 整型 | 访问计划中指定的执行标志,默认值为 0 |
ReturnNum | 长整型 | 访问计划返回记录的个数 |
ElapsedTime | 浮点型 | 访问计划查询耗时(单位:秒) |
IndexRead | 长整型 | 访问计划扫描索引记录的个数 |
DataRead | 长整型 | 访问计划扫描数据记录的个数 |
UserCPU | 浮点型 | 访问计划用户态 CPU 使用时间(单位:秒) |
SysCPU | 浮点型 | 访问计划内核态 CPU 使用时间(单位:秒) |
PlanPath | BSON 对象 | 访问计划的具体执行操作 MERGE |
Note:
MERGE 中包含子表的访问计划,即数据节点上的普通集合的访问计划
示例:
{
"NodeName": "hostname:11820",
"GroupName": "group",
"Role": "data",
"Collection": "maincs.maincl",
"Query": {},
"Sort": {
"a": 1
},
"Selector": {},
"Hint": {},
"Skip": 0,
"Return": -1,
"Flag": 2048,
"ReturnNum": 50000,
"ElapsedTime": 1.225226,
"IndexRead": 0,
"DataRead": 50000,
"UserCPU": 0.5399999999999991,
"SysCPU": 0.02000000000000002,
"PlanPath": {
"Operator": "MERGE",
...
}
}
Copy
普通集合或子表的详细访问计划
普通集合或子表的详细访问计划结构如下:
{
{ 集合的访问计划信息 },
"PlanPath": {
{ 查询上下文的访问计划信息 }
...
}
}
Copy
该访问计划包括以下信息:
字段名 | 类型 | 描述 |
---|---|---|
NodeName | 字符串 | 访问计划所在的节点的名称 |
GroupName | 字符串 | 访问计划所在的节点属于的复制组的名称 |
Role | 字符串 | 访问计划所在的节点的角色,"data" 表示数据节点 |
Collection | 字符串 | 访问计划访问的集合的名称 |
Query | BSON 对象 | 访问计划解析后的用户查询条件 |
Sort | BSON 对象 | 访问计划中的排序字段 |
Selector | BSON 对象 | 访问计划执行的选择符 |
Hint | BSON 对象 | 访问计划中指定查询使用索引的情况 |
Skip | 长整型 | 访问计划需要跳过的记录个数 |
Return | 长整型 | 访问计划最多返回的记录个数 |
Flag | 整型 | 访问计划中指定的执行标志,默认值为 0 |
ReturnNum | 长整型 | 访问计划返回记录的个数 |
ElapsedTime | 浮点型 | 访问计划查询耗时(单位:秒) |
IndexRead | 长整型 | 访问计划扫描索引记录的个数 |
DataRead | 长整型 | 访问计划扫描数据记录的个数 |
UserCPU | 浮点型 | 访问计划用户态 CPU 使用时间(单位:秒) |
SysCPU | 浮点型 | 访问计划内核态 CPU 使用时间(单位:秒) |
CacheStatus | 字符串 | 访问计划的缓存状态:1. "NoCache" 为没有加入缓存 2. "NewCache" 为新建的缓存 3. "HitCache" 为命中的缓存 |
MainCLPlan | 布尔型 | 访问计划是否主表共享的查询计划 |
CacheLevel | 字符串 | 访问计划的缓存级别:1. "OPT_PLAN_NOCACHE" 为不进行缓存 2. "OPT_PLAN_ORIGINAL" 为缓存原查询计划 3. "OPT_PLAN_NORMALZIED" 为缓存泛化后的查询计划 4. "OPT_PLAN_PARAMETERIZED" 为缓存参数化的查询计划,"OPT_PLAN_FUZZYOPTR" 为缓存参数化并带操作符模糊匹配的查询计划 |
Parameters | 数组类型 | 参数化的访问计划使用的参数列表 |
MatchConfig | BSON 对象 | 访问计划中的匹配符的配置 |
MatchConfig.EnableMixCmp | 布尔型 | 访问计划的匹配符是否使用混合匹配模式 |
MatchConfig.Parameterized | 布尔型 | 访问计划的匹配符是否支持参数化 |
MatchConfig.FuzzyOptr | 布尔型 | 访问计划的匹配符是否支持模糊匹配 |
PlanPath | BSON 对象 | 访问计划的具体执行操作 SORT、TBSCAN 或 IXSCAN |
Search | BSON 对象 | 查询计划优化器搜索过的访问计划 Search 选项为 true 时显示 请参考基于代价的访问计划评估 |
Note:
数据节点上的主表的访问计划请参考主表的访问计划
示例:
{
"NodeName": "hostname:11820",
"GroupName": "group",
"Role": "data",
"Collection": "sample.employee",
"Query": {
"a": {
"$gt": 100
}
},
"Sort": {},
"Selector": {},
"Hint": {},
"Skip": 0,
"Return": -1,
"Flag": 2048,
"ReturnNum": 0,
"ElapsedTime": 0.000093,
"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
},
"PlanPath": {
...
}
更多信息请访问巨杉数据库官网