Skip to content

Commit 85fd7b5

Browse files
authored
[To dev/1.3] Add cache hit situation and actual io size for BloomFilter, TimeSeriesMetadata(including ChunkMetadatList) and Chunk (#14082)
1 parent be0c8ad commit 85fd7b5

File tree

17 files changed

+681
-84
lines changed

17 files changed

+681
-84
lines changed

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,13 @@ public synchronized void releaseResource() {
654654
long durationTime = System.currentTimeMillis() - executionStartTime.get();
655655
QueryRelatedResourceMetricSet.getInstance().updateFragmentInstanceTime(durationTime);
656656

657+
SeriesScanCostMetricSet.getInstance()
658+
.recordBloomFilterMetrics(
659+
getQueryStatistics().getLoadBloomFilterFromCacheCount().get(),
660+
getQueryStatistics().getLoadBloomFilterFromDiskCount().get(),
661+
getQueryStatistics().getLoadBloomFilterActualIOSize().get(),
662+
getQueryStatistics().getLoadBloomFilterTime().get());
663+
657664
SeriesScanCostMetricSet.getInstance()
658665
.recordNonAlignedTimeSeriesMetadataCount(
659666
getQueryStatistics().getLoadTimeSeriesMetadataDiskSeqCount().get(),
@@ -679,6 +686,12 @@ public synchronized void releaseResource() {
679686
getQueryStatistics().getLoadTimeSeriesMetadataAlignedMemSeqTime().get(),
680687
getQueryStatistics().getLoadTimeSeriesMetadataAlignedMemUnSeqTime().get());
681688

689+
SeriesScanCostMetricSet.getInstance()
690+
.recordTimeSeriesMetadataMetrics(
691+
getQueryStatistics().getLoadTimeSeriesMetadataFromCacheCount().get(),
692+
getQueryStatistics().getLoadTimeSeriesMetadataFromDiskCount().get(),
693+
getQueryStatistics().getLoadTimeSeriesMetadataActualIOSize().get());
694+
682695
SeriesScanCostMetricSet.getInstance()
683696
.recordConstructChunkReadersCount(
684697
getQueryStatistics().getConstructAlignedChunkReadersMemCount().get(),
@@ -692,6 +705,12 @@ public synchronized void releaseResource() {
692705
getQueryStatistics().getConstructNonAlignedChunkReadersMemTime().get(),
693706
getQueryStatistics().getConstructNonAlignedChunkReadersDiskTime().get());
694707

708+
SeriesScanCostMetricSet.getInstance()
709+
.recordChunkMetrics(
710+
getQueryStatistics().getLoadChunkFromCacheCount().get(),
711+
getQueryStatistics().getLoadChunkFromDiskCount().get(),
712+
getQueryStatistics().getLoadChunkActualIOSize().get());
713+
695714
SeriesScanCostMetricSet.getInstance()
696715
.recordPageReadersDecompressCount(
697716
getQueryStatistics().getPageReadersDecodeAlignedMemCount().get(),

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryStatistics.java

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@
2929
*/
3030
public class QueryStatistics {
3131

32+
private final AtomicLong loadBloomFilterFromCacheCount = new AtomicLong(0);
33+
private final AtomicLong loadBloomFilterFromDiskCount = new AtomicLong(0);
34+
private final AtomicLong loadBloomFilterActualIOSize = new AtomicLong(0);
35+
private final AtomicLong loadBloomFilterTime = new AtomicLong(0);
36+
3237
// statistics for count and time of load timeseriesmetadata
3338
private final AtomicLong loadTimeSeriesMetadataDiskSeqCount = new AtomicLong(0);
3439
private final AtomicLong loadTimeSeriesMetadataDiskUnSeqCount = new AtomicLong(0);
@@ -48,6 +53,10 @@ public class QueryStatistics {
4853
private final AtomicLong loadTimeSeriesMetadataAlignedMemSeqTime = new AtomicLong(0);
4954
private final AtomicLong loadTimeSeriesMetadataAlignedMemUnSeqTime = new AtomicLong(0);
5055

56+
private final AtomicLong loadTimeSeriesMetadataFromCacheCount = new AtomicLong(0);
57+
private final AtomicLong loadTimeSeriesMetadataFromDiskCount = new AtomicLong(0);
58+
private final AtomicLong loadTimeSeriesMetadataActualIOSize = new AtomicLong(0);
59+
5160
// statistics for count and time of construct chunk readers(disk io and decompress)
5261
private final AtomicLong constructNonAlignedChunkReadersDiskCount = new AtomicLong(0);
5362
private final AtomicLong constructNonAlignedChunkReadersMemCount = new AtomicLong(0);
@@ -59,6 +68,10 @@ public class QueryStatistics {
5968
private final AtomicLong constructAlignedChunkReadersDiskTime = new AtomicLong(0);
6069
private final AtomicLong constructAlignedChunkReadersMemTime = new AtomicLong(0);
6170

71+
private final AtomicLong loadChunkFromCacheCount = new AtomicLong(0);
72+
private final AtomicLong loadChunkFromDiskCount = new AtomicLong(0);
73+
private final AtomicLong loadChunkActualIOSize = new AtomicLong(0);
74+
6275
// statistics for count and time of page decode
6376
private final AtomicLong pageReadersDecodeAlignedDiskCount = new AtomicLong(0);
6477
private final AtomicLong pageReadersDecodeAlignedDiskTime = new AtomicLong(0);
@@ -225,6 +238,46 @@ public AtomicLong getPageReaderMaxUsedMemorySize() {
225238
return pageReaderMaxUsedMemorySize;
226239
}
227240

241+
public AtomicLong getLoadBloomFilterActualIOSize() {
242+
return loadBloomFilterActualIOSize;
243+
}
244+
245+
public AtomicLong getLoadBloomFilterFromCacheCount() {
246+
return loadBloomFilterFromCacheCount;
247+
}
248+
249+
public AtomicLong getLoadBloomFilterFromDiskCount() {
250+
return loadBloomFilterFromDiskCount;
251+
}
252+
253+
public AtomicLong getLoadBloomFilterTime() {
254+
return loadBloomFilterTime;
255+
}
256+
257+
public AtomicLong getLoadChunkActualIOSize() {
258+
return loadChunkActualIOSize;
259+
}
260+
261+
public AtomicLong getLoadChunkFromCacheCount() {
262+
return loadChunkFromCacheCount;
263+
}
264+
265+
public AtomicLong getLoadChunkFromDiskCount() {
266+
return loadChunkFromDiskCount;
267+
}
268+
269+
public AtomicLong getLoadTimeSeriesMetadataActualIOSize() {
270+
return loadTimeSeriesMetadataActualIOSize;
271+
}
272+
273+
public AtomicLong getLoadTimeSeriesMetadataFromCacheCount() {
274+
return loadTimeSeriesMetadataFromCacheCount;
275+
}
276+
277+
public AtomicLong getLoadTimeSeriesMetadataFromDiskCount() {
278+
return loadTimeSeriesMetadataFromDiskCount;
279+
}
280+
228281
public TQueryStatistics toThrift() {
229282
return new TQueryStatistics(
230283
loadTimeSeriesMetadataDiskSeqCount.get(),
@@ -263,6 +316,16 @@ public TQueryStatistics toThrift() {
263316
alignedTimeSeriesMetadataModificationCount.get(),
264317
alignedTimeSeriesMetadataModificationTime.get(),
265318
nonAlignedTimeSeriesMetadataModificationCount.get(),
266-
nonAlignedTimeSeriesMetadataModificationTime.get());
319+
nonAlignedTimeSeriesMetadataModificationTime.get(),
320+
loadBloomFilterFromCacheCount.get(),
321+
loadBloomFilterFromDiskCount.get(),
322+
loadBloomFilterActualIOSize.get(),
323+
loadBloomFilterTime.get(),
324+
loadTimeSeriesMetadataFromCacheCount.get(),
325+
loadTimeSeriesMetadataFromDiskCount.get(),
326+
loadTimeSeriesMetadataActualIOSize.get(),
327+
loadChunkFromCacheCount.get(),
328+
loadChunkFromDiskCount.get(),
329+
loadChunkActualIOSize.get());
267330
}
268331
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk.metadata.MemAlignedChunkMetadataLoader;
3434
import org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk.metadata.MemChunkMetadataLoader;
3535
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
36+
import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ITimeIndex;
3637

3738
import org.apache.tsfile.file.metadata.AlignedTimeSeriesMetadata;
3839
import org.apache.tsfile.file.metadata.IChunkMetadata;
@@ -99,8 +100,9 @@ public static TimeseriesMetadata loadTimeSeriesMetadata(
99100
new PlainDeviceID(seriesPath.getDevice()),
100101
seriesPath.getMeasurement()),
101102
allSensors,
102-
resource.getTimeIndexType() != 1,
103-
context.isDebug());
103+
resource.getTimeIndexType() == ITimeIndex.FILE_TIME_INDEX_TYPE,
104+
context.isDebug(),
105+
context);
104106
if (timeSeriesMetadata != null) {
105107
long t2 = System.nanoTime();
106108
List<Modification> pathModifications = context.getPathModifications(resource, seriesPath);
@@ -268,8 +270,9 @@ private static AlignedTimeSeriesMetadata loadAlignedTimeSeriesMetadataFromDisk(
268270
filePath,
269271
new TimeSeriesMetadataCacheKey(resource.getTsFileID(), deviceId, ""),
270272
allSensors,
271-
resource.getTimeIndexType() != 1,
272-
isDebug);
273+
resource.getTimeIndexType() == ITimeIndex.FILE_TIME_INDEX_TYPE,
274+
isDebug,
275+
context);
273276
if (timeColumn != null) {
274277
// only need time column, like count_time aggregation
275278
if (valueMeasurementList.isEmpty()) {
@@ -290,8 +293,9 @@ private static AlignedTimeSeriesMetadata loadAlignedTimeSeriesMetadataFromDisk(
290293
new TimeSeriesMetadataCacheKey(
291294
resource.getTsFileID(), deviceId, valueMeasurement),
292295
allSensors,
293-
resource.getTimeIndexType() != 1,
294-
isDebug);
296+
resource.getTimeIndexType() == ITimeIndex.FILE_TIME_INDEX_TYPE,
297+
isDebug,
298+
context);
295299
exist = (exist || (valueColumn != null));
296300
valueTimeSeriesMetadataList.add(valueColumn);
297301
}

0 commit comments

Comments
 (0)