时序数据库promQL
Series_id
seriesId 就表示的是趋势图中的一条线
metricName 会被转化为__name__的lable,或者也叫tag;
Prometheus的写入模型由labels,timestamp,value等3个部分组成,其中labels唯一确定一条时间线。当一条时间线写入多个点时,相同的labels会出现多次,而且原始的labels占用的字节数通常要比 timestamp + value的占用的字节数多,如果原封不动的将上面的原始数据点(labels,timestamp,value)3元组写入WAL中,不仅磁盘IO开销大,而且因labels也会造成磁盘空间的极大浪费。
因此Prometheus为了减少WAL的磁盘IO,并提高吞吐,在WAL之前对写入的数据点做了预处理,将labels在内存中转换为一个整型seriesId,这个seriesId占用的大小会比较小,并将labels到id的映射写入WAL一次,后续写数据点到WAL中时,就只需要写(seriesId,timestamp,value)三元组了,而不是原先的(labels,timestamp,value)三元组如下图所示。
维护倒排索引文件
每个labelPair(tagkey=tagValue)到seriesId的映射, 下图timeseris IDs 即为seriesId
由于对所