You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@iotdb.apache.org by GitBox <gi...@apache.org> on 2021/11/02 16:43:37 UTC

[GitHub] [iotdb] LebronAl commented on issue #4259: [Refactor Cluster] query performance improvement in cluster- branch analysis

LebronAl commented on issue #4259:
URL: https://github.com/apache/iotdb/issues/4259#issuecomment-957932611


   ## Environment:
   - 16 Core 
   - 32G memory
   - 300G HDD
   - 10000 Mb/s
   - Ubuntu 18.04.5 LTS
   
   ## Version:
   - IoTDB master: 0013531610fea6b86ca53c259081abe4b0b78b68
   - IoTDB cluster-: 886d06b5ba97407d0a45a58fe843caecf1a18f4e
   - Benchmark master: 3ef6dca56ac8f8d197cd180fbfbe8cabdd6cc60d
   
   ## Cluster Configuration:
   - default_replica_num = 1
   - seed_nodes = "172.20.70.66:9003,172.20.70.67:9003,172.20.70.68:9003"
   
   ## Result
   ### master:
   - write:
   ```
   ----------------------Main Configurations----------------------
   CREATE_SCHEMA=true
   START_TIME=2018-9-20T00:00:00+08:00
   INSERT_DATATYPE_PROPORTION=1:1:1:1:1:1
   BATCH_SIZE_PER_WRITE=10
   IS_CLIENT_BIND=true
   LOOP=300
   IS_OUT_OF_ORDER=false
   IS_REGULAR_FREQUENCY=true
   GROUP_NUMBER=20
   IS_RECENT_QUERY=false
   QUERY_INTERVAL=250000
   SENSOR_NUMBER=10
   RESULT_PRECISION=0.1%
   POINT_STEP=5000
   CLIENT_NUMBER=20
   SG_STRATEGY=mod
   REAL_INSERT_RATE=1.0
   OUT_OF_ORDER_MODE=0
   DBConfig=
     DB_SWITCH=IoTDB-012-SESSION_BY_TABLET
     HOST=[172.20.70.66]
     PORT=[6667]
     USERNAME=root
     PASSWORD=root
     DB_NAME=test
     TOKEN=token
   DOUBLE_WRITE=false
   BENCHMARK_WORK_MODE=testWithDefaultPath
   OP_INTERVAL=0
   OPERATION_PROPORTION=1:0:0:0:0:0:0:0:0:0:0
   DEVICE_NUMBER=100000
   OUT_OF_ORDER_RATIO=0.5
   BENCHMARK_CLUSTER=false
   IS_DELETE_DATA=true
   IS_SENSOR_TS_ALIGNMENT=true
   ---------------------------------------------------------------
   ```
   ![image](https://user-images.githubusercontent.com/32640567/139905643-cda2d0c9-c0ba-451e-9ecb-bb569080101d.png)
   - read:
   ```
   ----------------------Main Configurations----------------------
   CREATE_SCHEMA=false
   START_TIME=2018-9-20T00:00:00+08:00
   INSERT_DATATYPE_PROPORTION=1:1:1:1:1:1
   BATCH_SIZE_PER_WRITE=10
   IS_CLIENT_BIND=true
   LOOP=3000
   IS_OUT_OF_ORDER=false
   IS_REGULAR_FREQUENCY=true
   GROUP_NUMBER=20
   IS_RECENT_QUERY=false
   QUERY_INTERVAL=250000
   SENSOR_NUMBER=10
   RESULT_PRECISION=0.1%
   POINT_STEP=5000
   CLIENT_NUMBER=20
   SG_STRATEGY=mod
   REAL_INSERT_RATE=1.0
   OUT_OF_ORDER_MODE=0
   DBConfig=
     DB_SWITCH=IoTDB-012-SESSION_BY_TABLET
     HOST=[172.20.70.66]
     PORT=[6667]
     USERNAME=root
     PASSWORD=root
     DB_NAME=test
     TOKEN=token
   DOUBLE_WRITE=false
   BENCHMARK_WORK_MODE=testWithDefaultPath
   OP_INTERVAL=0
   OPERATION_PROPORTION=0:1:1:1:1:1:1:1:1:1:1
   DEVICE_NUMBER=100000
   OUT_OF_ORDER_RATIO=0.5
   BENCHMARK_CLUSTER=false
   IS_DELETE_DATA=false
   IS_SENSOR_TS_ALIGNMENT=true
   ---------------------------------------------------------------
   ```
   ![image](https://user-images.githubusercontent.com/32640567/139905701-300823be-a5d7-4001-91e5-d25e57368071.png)
   - read twice(with cache):
   ![image](https://user-images.githubusercontent.com/32640567/139905872-ddd9f328-75f3-4990-9afb-a7031da87be6.png)
   ### master:
   - write:
   ```
   ----------------------Main Configurations----------------------
   CREATE_SCHEMA=true
   START_TIME=2018-9-20T00:00:00+08:00
   INSERT_DATATYPE_PROPORTION=1:1:1:1:1:1
   BATCH_SIZE_PER_WRITE=10
   IS_CLIENT_BIND=true
   LOOP=300
   IS_OUT_OF_ORDER=false
   IS_REGULAR_FREQUENCY=true
   GROUP_NUMBER=20
   IS_RECENT_QUERY=false
   QUERY_INTERVAL=250000
   SENSOR_NUMBER=10
   RESULT_PRECISION=0.1%
   POINT_STEP=5000
   CLIENT_NUMBER=20
   SG_STRATEGY=mod
   REAL_INSERT_RATE=1.0
   OUT_OF_ORDER_MODE=0
   DBConfig=
     DB_SWITCH=IoTDB-012-SESSION_BY_TABLET
     HOST=[172.20.70.66]
     PORT=[6667]
     USERNAME=root
     PASSWORD=root
     DB_NAME=test
     TOKEN=token
   DOUBLE_WRITE=false
   BENCHMARK_WORK_MODE=testWithDefaultPath
   OP_INTERVAL=0
   OPERATION_PROPORTION=1:0:0:0:0:0:0:0:0:0:0
   DEVICE_NUMBER=100000
   OUT_OF_ORDER_RATIO=0.5
   BENCHMARK_CLUSTER=false
   IS_DELETE_DATA=true
   IS_SENSOR_TS_ALIGNMENT=true
   ---------------------------------------------------------------
   ```
   ![image](https://user-images.githubusercontent.com/32640567/139906822-0f86c8d2-35a4-4ce5-b511-9046130a372b.png)
   - read:
   ```
   ----------------------Main Configurations----------------------
   CREATE_SCHEMA=false
   START_TIME=2018-9-20T00:00:00+08:00
   INSERT_DATATYPE_PROPORTION=1:1:1:1:1:1
   BATCH_SIZE_PER_WRITE=10
   IS_CLIENT_BIND=true
   LOOP=3000
   IS_OUT_OF_ORDER=false
   IS_REGULAR_FREQUENCY=true
   GROUP_NUMBER=20
   IS_RECENT_QUERY=false
   QUERY_INTERVAL=250000
   SENSOR_NUMBER=10
   RESULT_PRECISION=0.1%
   POINT_STEP=5000
   CLIENT_NUMBER=20
   SG_STRATEGY=mod
   REAL_INSERT_RATE=1.0
   OUT_OF_ORDER_MODE=0
   DBConfig=
     DB_SWITCH=IoTDB-012-SESSION_BY_TABLET
     HOST=[172.20.70.66]
     PORT=[6667]
     USERNAME=root
     PASSWORD=root
     DB_NAME=test
     TOKEN=token
   DOUBLE_WRITE=false
   BENCHMARK_WORK_MODE=testWithDefaultPath
   OP_INTERVAL=0
   OPERATION_PROPORTION=0:1:1:1:1:1:1:1:1:1:1
   DEVICE_NUMBER=100000
   OUT_OF_ORDER_RATIO=0.5
   BENCHMARK_CLUSTER=false
   IS_DELETE_DATA=false
   IS_SENSOR_TS_ALIGNMENT=true
   ---------------------------------------------------------------
   ```
   ![image](https://user-images.githubusercontent.com/32640567/139906921-7cfb3471-7e03-4ffc-99ca-e8ea3e764660.png)
   - read twice:
   ![image](https://user-images.githubusercontent.com/32640567/139906955-c9010036-3e9f-4de2-bc97-01b8492e91d2.png)
   
   ## Conclusion
   
   In order to more objectively measure the performance comparison between `master` and `cluster-`, I conducted the above test. The test results show that the read and write performance of `cluster-` and `master` branches is basically the same, which is basically in line with our changes.
   
   As for why @chengjianyun tests for a huge performance difference,  I suspect there are two reasons:
   1. The query time is too short, only a few seconds of the query, such a short time test results are often inaccurate. So I made the query loop larger during above test.
   2. Leader distribution in the case of `default_replica_num=3` may also affect read and write performance. So I chose `default_replica_num=1` for comparison
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscribe@iotdb.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org