InfluxDB数据删除流程
以使用tsi索引为例讲解DELETE SQL删除数据的过程:
- 根据DELETE SQL中指定的WHERE条件,从tsi/tsl文件中过滤得到满足条件的seriesID
- 通过查找series index以及series segment文件得到seriesID对应的seriesKey
- 查找TSM文件中的IndexBlock,判断该TSM是否存储seriesKey对应的数据(由于IndexBlock中保存的Key是由seriesKey + fieldKey组成,故只需要判断Key中的seriesKey与待删除的seriesKey是否相同就可以得到该TSM文件中是否存在seriesKey对应的时序数据),若存在,则将该Key对应的删除记录写入到该TSM对应的tombstone文件中,删除记录如下所示:
minTime和maxTime表示DELTE SQL中WHERE中指定的时间范围,表示删除指定时间范围的数据。 - 如果Key在TSM中的数据需要全部删除(DELETE SQL中指定的时间范围完全覆盖Key在TSM中对应的时间范围),则将indirectInd