This is an automated email from the ASF dual-hosted git repository.
xingtanzjr pushed a commit to branch ca_performance
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/ca_performance by this push:
new cd9c0026fef optimize the ReadChunkPerformer for inner compaction by
getting rid of new PartialPath()
cd9c0026fef is described below
commit cd9c0026fef6b2edd7ac8f0ec6e700fd333330b5
Author: Jinrui.Zhang <[email protected]>
AuthorDate: Tue Aug 8 16:14:09 2023 +0800
optimize the ReadChunkPerformer for inner compaction by getting rid of new
PartialPath()
---
.../performer/impl/ReadChunkCompactionPerformer.java | 5 ++---
.../execute/utils/MultiTsFileDeviceIterator.java | 6 ++++--
.../readchunk/SingleSeriesCompactionExecutor.java | 19 ++++++++++---------
.../selector/impl/SizeTieredCompactionSelector.java | 2 +-
4 files changed, 17 insertions(+), 15 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java
index 78c1d0bc965..dbf12840029 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java
@@ -20,7 +20,6 @@
package
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.impl;
import org.apache.iotdb.commons.exception.MetadataException;
-import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.StorageEngineException;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.exception.CompactionTargetFileCountExceededException;
@@ -164,7 +163,7 @@ public class ReadChunkCompactionPerformer implements
ISeqCompactionPerformer {
while (seriesIterator.hasNextSeries()) {
checkThreadInterrupted();
// TODO: we can provide a configuration item to enable concurrent
between each series
- PartialPath p = new PartialPath(device, seriesIterator.nextSeries());
+ String measurementUID = seriesIterator.nextSeries();
// TODO: seriesIterator needs to be refactor.
// This statement must be called before next hasNextSeries() called, or
it may be trapped in a
// dead-loop.
@@ -172,7 +171,7 @@ public class ReadChunkCompactionPerformer implements
ISeqCompactionPerformer {
seriesIterator.getMetadataListForCurrentSeries();
SingleSeriesCompactionExecutor compactionExecutorOfCurrentTimeSeries =
new SingleSeriesCompactionExecutor(
- p, readerAndChunkMetadataList, writer, targetResource, summary);
+ device, measurementUID, readerAndChunkMetadataList, writer,
targetResource, summary);
compactionExecutorOfCurrentTimeSeries.execute();
}
writer.endChunkGroup();
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
index 09fa3a85bcd..038df0a48fb 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
@@ -543,10 +543,9 @@ public class MultiTsFileDeviceIterator implements
AutoCloseable {
if (currentCompactingSeries == null) {
return new LinkedList<>();
}
-
+ PartialPath path = null;
LinkedList<Pair<TsFileSequenceReader, List<ChunkMetadata>>>
readerAndChunkMetadataForThisSeries = new LinkedList<>();
- PartialPath path = new PartialPath(device, currentCompactingSeries);
for (TsFileResource resource : tsFileResourcesSortedByAsc) {
TsFileSequenceReader reader = readerMap.get(resource);
@@ -563,6 +562,9 @@ public class MultiTsFileDeviceIterator implements
AutoCloseable {
resource,
r -> new
LinkedList<>(ModificationFile.getNormalMods(r).getModifications()));
LinkedList<Modification> modificationForCurrentSeries = new
LinkedList<>();
+ if (modificationsInThisResource.size() > 0 && path == null) {
+ path = new PartialPath(device, currentCompactingSeries);
+ }
// collect the modifications for current series
for (Modification modification : modificationsInThisResource) {
if (modification.getPath().matchFullPath(path)) {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
index c3ddb229c1b..65ab953a9c0 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
@@ -19,7 +19,6 @@
package
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.readchunk;
-import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.CompactionTaskSummary;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileWriter;
@@ -45,7 +44,7 @@ import java.util.List;
@SuppressWarnings("squid:S1319")
public class SingleSeriesCompactionExecutor {
private String device;
- private PartialPath series;
+ private String measurementUID;
private LinkedList<Pair<TsFileSequenceReader, List<ChunkMetadata>>>
readerAndChunkMetadataList;
private CompactionTsFileWriter fileWriter;
private TsFileResource targetResource;
@@ -70,13 +69,14 @@ public class SingleSeriesCompactionExecutor {
IoTDBDescriptor.getInstance().getConfig().getChunkPointNumLowerBoundInCompaction();
public SingleSeriesCompactionExecutor(
- PartialPath series,
+ String device,
+ String measurementUID,
IMeasurementSchema measurementSchema,
LinkedList<Pair<TsFileSequenceReader, List<ChunkMetadata>>>
readerAndChunkMetadataList,
CompactionTsFileWriter fileWriter,
TsFileResource targetResource) {
- this.device = series.getDevice();
- this.series = series;
+ this.device = device;
+ this.measurementUID = measurementUID;
this.readerAndChunkMetadataList = readerAndChunkMetadataList;
this.fileWriter = fileWriter;
this.schema = measurementSchema;
@@ -88,13 +88,14 @@ public class SingleSeriesCompactionExecutor {
}
public SingleSeriesCompactionExecutor(
- PartialPath series,
+ String device,
+ String measurementUID,
LinkedList<Pair<TsFileSequenceReader, List<ChunkMetadata>>>
readerAndChunkMetadataList,
CompactionTsFileWriter fileWriter,
TsFileResource targetResource,
CompactionTaskSummary summary) {
- this.device = series.getDevice();
- this.series = series;
+ this.device = device;
+ this.measurementUID = measurementUID;
this.readerAndChunkMetadataList = readerAndChunkMetadataList;
this.fileWriter = fileWriter;
this.schema = null;
@@ -162,7 +163,7 @@ public class SingleSeriesCompactionExecutor {
ChunkHeader chunkHeader = chunk.getHeader();
this.schema =
new MeasurementSchema(
- series.getMeasurement(),
+ measurementUID,
chunkHeader.getDataType(),
chunkHeader.getEncodingType(),
chunkHeader.getCompressionType());
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
index 11a6bba9152..1dcef8afc8b 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
@@ -189,7 +189,7 @@ public class SizeTieredCompactionSelector
// int maxLevel = searchMaxFileLevel();
// In order to verify the impaction of L2 compaction, we disable the other
levels' compaction
// except L0
- int maxLevel = 1;
+ int maxLevel = 0;
for (int currentLevel = 0; currentLevel <= maxLevel; currentLevel++) {
List<Pair<List<TsFileResource>, Long>> singleLevelTask =
selectSingleLevel(currentLevel);
if (!singleLevelTask.isEmpty()) {