统计信息

    • SYSSTAT.SYSCOLLECTIONSTAT 统计信息示例:
    • 索引的统计信息存放在数据节点 SYSSTAT.SYSINDEXSTAT 集合中,具体字段如下:
    字段名数据类型默认值必须说明
    CollectionSpaceString统计收集的集合空间名
    CollectionString统计收集的集合名
    CreateTimeNumberLong0统计收集的时间戳
    IndexString统计收集的索引名
    IndexLevelsNumberInt1统计收集时索引的层数
    IndexPagesNumberInt1统计收集时索引页的个数
    IsUniqueBOOLFALSE统计收集的索引是否唯一索引
    KeyPatternBSONObj统计收集的索引字段定义,如:{a:1}
    SampleRecordsNumberLong0统计收集时抽样的文档个数
    TotalRecordsNumberLong10统计收集时的文档个数
    MCVObject频繁数值集合(Most Common Values),如:
    MCV: { Values: [ {a:1}, {a:2}, … ], Frac: [ 50, 50, … ] }
    MCV.ValuesArray频繁数值中的值
    MCV.FracArray频繁数值的比例,每个值的取值 0 ~ 10000,最终比例为 (Frac / 10000) * 100%
    • SYSSTAT.SYSINDEXSTAT 统计信息示例:
    • 如果字段建立了唯一索引,则选择率为:selectivity = 1 / TotalRecords
    • 如果相等比较的值落入频繁数值集合中,假设命中下标为 i,则选择率为:selectivity = MCV.Frac[i]
    • 如果相等比较的值没有落入频繁数值集合中,则选择率为:selectivity = ( 1 - sum( MCV.Frac ) ) * 0.005
    • 如果相等比较的范围没有落入频繁数值集合中,则选择率为:
    • 如果字段索引是唯一索引,相等条件选择率为:selectivity = 1 / TotalRecords
    • 如果字段索引是普通索引,相等条件{ val : { $et : 1 } } 命中频繁数值集合,其选择率为:selectivity = 0.1
    • 如果字段索引是普通索引,相等条件{ val : { $et : 10 } } 没有命中频繁数值集合,其选择率为:
    • 范围条件{ val : { $lt : 4 } } 命中了频繁数值集合的下标0、1 和 2,其选择率为:selectivity = 0.2
    • 范围条件{ val : { $gt : 9 } } 没有命中频繁数值集合,其选择率为:selectivity = 0.005