This is an automated email from the ASF dual-hosted git repository.
haonan 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 4e778b5 [IOTDB-1691] Wrong way of calculating the vector's memory
footprint (#3979)
4e778b5 is described below
commit 4e778b56900a177b35aa4c8fda8a175eb417313a
Author: Jackie Tien <[email protected]>
AuthorDate: Sat Sep 18 00:25:57 2021 +0800
[IOTDB-1691] Wrong way of calculating the vector's memory footprint (#3979)
Co-authored-by: Haonan <[email protected]>
---
.../java/org/apache/iotdb/db/utils/MemUtils.java | 36 +++++++++-------------
1 file changed, 14 insertions(+), 22 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..f581b34 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();
- if (schema.getType() == TSDataType.VECTOR) {
- // time and index column memSize
- memSize += (end - start) * (8L + 4L);
+ TSDataType valueType;
+ if (insertTabletPlan.isAligned()) {
+ 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;
}