...
double TIME_INDEX_MEMORY_THRESHOLD:TimeIndex可使用的内存总量,值为allocateMemoryForRead * time_index_memory_proportion
ExecutorService downgradeThreadPool:用于执行TimeIndex降级任务的线程池
PriorityQueue<TsFileResource> sealedTimeIndex:维护所有已封口的TsFileResoruce,按照TimeIndex降级的优先级从高到低排序
long totalTimeIndexMemCost:所有已封口的TimeIndex占用的内存总量(非精确值,只计入封口文件的TimeIndex大小),当该值超过TIME_INDEX_MEMORY_THRESHOLD时触发索引降级
方法 | 描述 |
---|---|
registerSealedTimeIndex | 语法:public synchronized ITimeIndex registerSealedTimeIndex(TsFileResource resource) 功能:将已封口的TsFileResoruce添加 |
到sealedTimeIndex中,并在totalTimeIndexMemCost中添加内存占用,当totalTimeIndexMemCost ≥ TIME_INDEX_MEMORY_THRESHOLD时触发索引降级 | |
releaseTimeIndexMemCost | 语法:public synchronized void releaseTimeIndexMemCost(long memCost) 功能:在totalTimeIndexMemCost上减去memCost |
chooseTimeIndexsToFlush | 语法:private void chooseTimeIndexsToFlush() 功能:挑选sealedTimeIndex中的TimeIndex进行降级,直至totalTimeIndexMemCost降至TIME_INDEX_MEMORY_THRESHOLD以下,若无法降至TIME_INDEX_MEMORY_THRESHOLD以下,则抛出异常 |
org.apache.iotdb.db.engine.storagegroup.TsFileResource
- 将timeIndex字段更改为volatile
方法 | 描述 |
---|---|
downgradeTimeIndexTo | 语法:public void downgradeTimeIndexTo(TimeIndexLevel targetlevel) 功能:将该TsFileResource的TimeIndex降级到目标等级 |
org.apache.iotdb.db.engine.storagegroup.timeindex.ITimeIndex
方法 | 描述 |
---|---|
compareDowngradePriority | 语法:default int compareDowngradePriority(ITimeIndex) 功能:获取降级优先级 |