This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch deviceIdPool12 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit d4880c71cd0e73462f066ba2a2dd9aeccadc9d9c Author: HTHou <[email protected]> AuthorDate: Tue Jul 6 22:09:01 2021 +0800 Use cachedDevicePool to reduce TsFileResource memory size --- .../db/engine/storagegroup/timeindex/DeviceTimeIndex.java | 3 ++- .../db/engine/storagegroup/timeindex/FileTimeIndex.java | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/DeviceTimeIndex.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/DeviceTimeIndex.java index 381d4b3..25f09f4 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/DeviceTimeIndex.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/DeviceTimeIndex.java @@ -190,7 +190,8 @@ public class DeviceTimeIndex implements ITimeIndex { index = deviceToIndex.get(deviceId); } else { index = deviceToIndex.size(); - deviceToIndex.put(deviceId, index); + String cachedDeviceId = cachedDevicePool.computeIfAbsent(deviceId, k -> k); + deviceToIndex.put(cachedDeviceId, index); if (startTimes.length <= index) { startTimes = enLargeArray(startTimes, Long.MAX_VALUE); endTimes = enLargeArray(endTimes, Long.MIN_VALUE); diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/FileTimeIndex.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/FileTimeIndex.java index e1e5251..8c6a156 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/FileTimeIndex.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/FileTimeIndex.java @@ -173,7 +173,8 @@ public class FileTimeIndex implements ITimeIndex { @Override public void updateStartTime(String deviceId, long time) { - devices.add(deviceId); + String cachedDeviceId = cachedDevicePool.computeIfAbsent(deviceId, k -> k); + devices.add(cachedDeviceId); if (this.startTime > time) { this.startTime = time; } @@ -181,7 +182,8 @@ public class FileTimeIndex implements ITimeIndex { @Override public void updateEndTime(String deviceId, long time) { - devices.add(deviceId); + String cachedDeviceId = cachedDevicePool.computeIfAbsent(deviceId, k -> k); + devices.add(cachedDeviceId); if (this.endTime < time) { this.endTime = time; } @@ -189,13 +191,15 @@ public class FileTimeIndex implements ITimeIndex { @Override public void putStartTime(String deviceId, long time) { - devices.add(deviceId); + String cachedDeviceId = cachedDevicePool.computeIfAbsent(deviceId, k -> k); + devices.add(cachedDeviceId); this.startTime = time; } @Override public void putEndTime(String deviceId, long time) { - devices.add(deviceId); + String cachedDeviceId = cachedDevicePool.computeIfAbsent(deviceId, k -> k); + devices.add(cachedDeviceId); this.endTime = time; }
