This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 30f69c61182 Add WAL entry number for one TsFile metric (#15818)
30f69c61182 is described below
commit 30f69c61182c0fdce9b58b0761e3d45f0895511d
Author: Haonan <[email protected]>
AuthorDate: Fri Jun 27 11:34:33 2025 +0800
Add WAL entry number for one TsFile metric (#15818)
---
.../org/apache/iotdb/db/service/metrics/WritingMetrics.java | 13 +++++++++++++
.../storageengine/dataregion/memtable/TsFileProcessor.java | 8 ++++++++
2 files changed, 21 insertions(+)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java
index 2481519018f..15686b89546 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java
@@ -185,11 +185,13 @@ public class WritingMetrics implements IMetricSet {
public static final String READ_WAL_BUFFER_COST_NS = "read_wal_buffer_cost";
public static final String WRITE_WAL_BUFFER_COST_NS =
"write_wal_buffer_cost";
public static final String ENTRIES_COUNT = "entries_count";
+ public static final String WAL_ENTRY_NUM_FOR_ONE_TSFILE =
"wal_entry_num_for_one_tsfile";
public static final String WAL_QUEUE_CURRENT_MEM_COST =
"wal_queue_current_mem_cost";
public static final String WAL_QUEUE_MAX_MEM_COST = "wal_queue_max_mem_cost";
private Histogram usedRatioHistogram =
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
private Histogram entriesCountHistogram =
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+ private Histogram walEntryNumForOneTsFileHistogram =
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
private Histogram serializedWALBufferSizeHistogram =
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
private Histogram wroteWALBufferSizeHistogram =
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
private Histogram walCompressCostHistogram =
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
@@ -216,6 +218,12 @@ public class WritingMetrics implements IMetricSet {
MetricLevel.IMPORTANT,
Tag.NAME.toString(),
ENTRIES_COUNT);
+ walEntryNumForOneTsFileHistogram =
+ metricService.getOrCreateHistogram(
+ Metric.WAL_BUFFER.toString(),
+ MetricLevel.IMPORTANT,
+ Tag.NAME.toString(),
+ WAL_ENTRY_NUM_FOR_ONE_TSFILE);
serializedWALBufferSizeHistogram =
metricService.getOrCreateHistogram(
@@ -280,6 +288,7 @@ public class WritingMetrics implements IMetricSet {
MetricType.AUTO_GAUGE, Metric.WAL_NODE_NUM.toString(),
Tag.NAME.toString(), WAL_NODES_NUM);
usedRatioHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
entriesCountHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+ walEntryNumForOneTsFileHistogram =
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
Arrays.asList(
USED_RATIO,
ENTRIES_COUNT,
@@ -918,6 +927,10 @@ public class WritingMetrics implements IMetricSet {
entriesCountHistogram.update(count);
}
+ public void recordWALEntryNumForOneTsFile(long count) {
+ walEntryNumForOneTsFileHistogram.update(count);
+ }
+
public void recordWALQueueMaxMemorySize(long size) {
walQueueMaxMemSizeGauge.set(size);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
index 861b72c923a..b2c96a87f3b 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
@@ -204,6 +204,8 @@ public class TsFileProcessor {
public static final int MEMTABLE_NOT_EXIST = -1;
+ private int walEntryNum = 0;
+
@SuppressWarnings("squid:S107")
public TsFileProcessor(
String dataRegionName,
@@ -318,6 +320,7 @@ public class TsFileProcessor {
// recordScheduleWalCost
infoForMetrics[2] += System.nanoTime() - startTime;
}
+ walEntryNum++;
startTime = System.nanoTime();
@@ -414,6 +417,7 @@ public class TsFileProcessor {
// recordScheduleWalCost
infoForMetrics[2] += System.nanoTime() - startTime;
}
+ walEntryNum++;
startTime = System.nanoTime();
@@ -586,6 +590,7 @@ public class TsFileProcessor {
// recordScheduleWalCost
infoForMetrics[2] += System.nanoTime() - startTime;
}
+ walEntryNum++;
startTime = System.nanoTime();
@@ -1207,10 +1212,12 @@ public class TsFileProcessor {
}
public WALFlushListener logDeleteDataNodeInWAL(DeleteDataNode
deleteDataNode) {
+ walEntryNum++;
return walNode.log(workMemTable.getMemTableId(), deleteDataNode);
}
public WALFlushListener logDeleteDataNodeInWAL(RelationalDeleteDataNode
deleteDataNode) {
+ walEntryNum++;
return walNode.log(workMemTable.getMemTableId(), deleteDataNode);
}
@@ -1436,6 +1443,7 @@ public class TsFileProcessor {
.recordMemTableLiveDuration(System.currentTimeMillis() -
getWorkMemTableCreatedTime());
WritingMetrics.getInstance()
.recordActiveMemTableCount(dataRegionInfo.getDataRegion().getDataRegionId(),
-1);
+ WritingMetrics.getInstance().recordWALEntryNumForOneTsFile(walEntryNum);
workMemTable = null;
return FlushManager.getInstance().registerTsFileProcessor(this);
}