You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2021/09/16 05:53:19 UTC

[iotdb] 01/01: Correct the memory calculation of vector in MemTable

This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch VectorTest
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 2edf472ab17ae3f19b59baad1e07fc307cf56c82
Author: JackieTien97 <Ja...@foxmail.com>
AuthorDate: Thu Sep 16 13:52:48 2021 +0800

    Correct the memory calculation of vector in MemTable
---
 .../java/org/apache/iotdb/db/utils/MemUtils.java   | 34 +++++++++-------------
 1 file changed, 13 insertions(+), 21 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
index 564c39d..9a3363a 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
@@ -101,40 +101,32 @@ public class MemUtils {
       return 0L;
     }
     long memSize = 0;
-    int columnCount = 0;
+    boolean hasVector = false;
     for (int i = 0; i < insertTabletPlan.getMeasurementMNodes().length; i++) {
       if (insertTabletPlan.getMeasurementMNodes()[i] == null) {
-        columnCount++;
         continue;
       }
       IMeasurementSchema schema = insertTabletPlan.getMeasurementMNodes()[i].getSchema();
+      TSDataType valueType;
       if (schema.getType() == TSDataType.VECTOR) {
-        // time and index column memSize
-        memSize += (end - start) * (8L + 4L);
+        hasVector = true;
         // value columns memSize
-        for (TSDataType type : schema.getSubMeasurementsTSDataTypeList()) {
-          if (type == TSDataType.TEXT && addingTextDataSize) {
-            for (int j = start; j < end; j++) {
-              memSize += getBinarySize(((Binary[]) insertTabletPlan.getColumns()[columnCount])[j]);
-            }
-          } else {
-            memSize += (end - start) * type.getDataTypeSize();
-          }
-          columnCount++;
-        }
+        valueType = schema.getSubMeasurementsTSDataTypeList().get(i);
       } else {
         // time column memSize
         memSize += (end - start) * 8L;
-        if (insertTabletPlan.getDataTypes()[columnCount] == TSDataType.TEXT && addingTextDataSize) {
-          for (int j = start; j < end; j++) {
-            memSize += getBinarySize(((Binary[]) insertTabletPlan.getColumns()[columnCount])[j]);
-          }
-        } else {
-          memSize += (end - start) * insertTabletPlan.getDataTypes()[columnCount].getDataTypeSize();
+        valueType = insertTabletPlan.getDataTypes()[i];
+      }
+      if (valueType == TSDataType.TEXT && addingTextDataSize) {
+        for (int j = start; j < end; j++) {
+          memSize += getBinarySize(((Binary[]) insertTabletPlan.getColumns()[i])[j]);
         }
-        columnCount++;
+      } else {
+        memSize += (long)(end - start) * valueType.getDataTypeSize();
       }
     }
+    // time and index column memSize for vector
+    memSize += hasVector ? (end - start) * (8L + 4L) : 0L;
     return memSize;
   }