This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch tsbs/iot
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/tsbs/iot by this push:
new 6eb29f4365e add query time cost statistics
6eb29f4365e is described below
commit 6eb29f4365e3df4ac60b3cd5d408b68910e9c55c
Author: JackieTien97 <[email protected]>
AuthorDate: Tue May 7 17:20:06 2024 +0800
add query time cost statistics
---
.../main/java/org/apache/iotdb/TSBSExample.java | 255 +++++++++++++--------
1 file changed, 160 insertions(+), 95 deletions(-)
diff --git a/example/session/src/main/java/org/apache/iotdb/TSBSExample.java
b/example/session/src/main/java/org/apache/iotdb/TSBSExample.java
index bfed9779e50..e6d3b0bea9f 100644
--- a/example/session/src/main/java/org/apache/iotdb/TSBSExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/TSBSExample.java
@@ -25,6 +25,9 @@ import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.rpc.StatementExecutionException;
import org.apache.iotdb.session.Session;
+import java.util.ArrayList;
+import java.util.List;
+
public class TSBSExample {
public static void main(String[] args)
@@ -44,153 +47,215 @@ public class TSBSExample {
String queryType = args[1];
+ int queryCount = Integer.parseInt(args[2]);
+ if (queryCount <= 0) {
+ System.out.println("Query Count should be larger than 0.");
+ return;
+ }
+ List<Long> timeCostList = new ArrayList<>();
+
switch (queryType) {
case "last-loc":
- try (SessionDataSet dataSet =
- session.executeQueryStatement(
- String.format(
- "SELECT max_time(latitude), last_value(latitude),
last_value(longitude) FROM root.readings.%s.** align by device",
- args[2]))) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet =
+ session.executeQueryStatement(
+ String.format(
+ "SELECT max_time(latitude), last_value(latitude),
last_value(longitude) FROM root.readings.%s.** align by device",
+ args[3]))) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "low-fuel":
- try (SessionDataSet dataSet =
- session.executeQueryStatement(
- String.format(
- "SELECT last_value(fuel_state) FROM root.diagnostics.%s.**
WHERE fuel_state <= 0.1 align by device;",
- args[2]))) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet =
+ session.executeQueryStatement(
+ String.format(
+ "SELECT last_value(fuel_state) FROM
root.diagnostics.%s.** WHERE fuel_state <= 0.1 align by device;",
+ args[3]))) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "high-load":
- try (SessionDataSet dataSet = session.tsbsIoTHighLoad(args[2])) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet = session.tsbsIoTHighLoad(args[3])) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "stationary-trucks":
- try (SessionDataSet dataSet =
- session.executeQueryStatement(
- String.format(
- "select avg(velocity) from root.readings.%s.** where time
>= %d and time < %d having avg(velocity) < 1 align by device",
- args[2], Long.parseLong(args[3]),
Long.parseLong(args[4])))) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet =
+ session.executeQueryStatement(
+ String.format(
+ "select avg(velocity) from root.readings.%s.** where
time >= %d and time < %d having avg(velocity) < 1 align by device",
+ args[3], Long.parseLong(args[4]),
Long.parseLong(args[5])))) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "long-driving-sessions":
- try (SessionDataSet dataSet =
- session.tsbsIoTLongDrivingSessions(
- args[2], Long.parseLong(args[3]), Long.parseLong(args[4]))) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet =
+ session.tsbsIoTLongDrivingSessions(
+ args[3], Long.parseLong(args[4]), Long.parseLong(args[5]))) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "long-daily-sessions":
- try (SessionDataSet dataSet =
- session.tsbsIoTLongDailySessions(
- args[2], Long.parseLong(args[3]), Long.parseLong(args[4]))) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet =
+ session.tsbsIoTLongDailySessions(
+ args[3], Long.parseLong(args[4]), Long.parseLong(args[5]))) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "avg-vs-projected-fuel-consumption":
- try (SessionDataSet dataSet =
session.tsbsIoTAvgVsProjectedFuelConsumption()) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet =
session.tsbsIoTAvgVsProjectedFuelConsumption()) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "avg-daily-driving-duration":
- try (SessionDataSet dataSet =
- session.tsbsIoTAvgDailyDrivingDuration(
- Long.parseLong(args[2]), Long.parseLong(args[3]))) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet =
+ session.tsbsIoTAvgDailyDrivingDuration(
+ Long.parseLong(args[3]), Long.parseLong(args[4]))) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "avg-daily-driving-session":
- try (SessionDataSet dataSet =
- session.tsbsIoTAvgDailyDrivingSession(
- Long.parseLong(args[2]), Long.parseLong(args[3]))) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet =
+ session.tsbsIoTAvgDailyDrivingSession(
+ Long.parseLong(args[3]), Long.parseLong(args[4]))) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "avg-load":
- try (SessionDataSet dataSet = session.tsbsIoTAvgLoad()) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet = session.tsbsIoTAvgLoad()) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "daily-activity":
- try (SessionDataSet dataSet =
- session.tsbsIoTDailyActivity(Long.parseLong(args[2]),
Long.parseLong(args[3]))) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet =
+ session.tsbsIoTDailyActivity(Long.parseLong(args[3]),
Long.parseLong(args[4]))) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
case "breakdown-frequency":
- try (SessionDataSet dataSet =
- session.tsbsIoTBreakdownFrequency(Long.parseLong(args[2]),
Long.parseLong(args[3]))) {
- SessionDataSet.DataIterator iterator = dataSet.iterator();
- long count = 0;
- while (iterator.next()) {
- count++;
+ for (int i = 0; i < queryCount; i++) {
+ long startTimeNano = System.nanoTime();
+ try (SessionDataSet dataSet =
+ session.tsbsIoTBreakdownFrequency(Long.parseLong(args[3]),
Long.parseLong(args[4]))) {
+ SessionDataSet.DataIterator iterator = dataSet.iterator();
+ long count = 0;
+ while (iterator.next()) {
+ count++;
+ }
+ timeCostList.add(System.nanoTime() - startTimeNano);
}
- System.out.println("total lines: " + count);
}
break;
default:
throw new UnsupportedOperationException(queryType);
}
-
session.close();
+
+ printQueryTimeCost(queryCount, timeCostList);
+ }
+
+ private static void printQueryTimeCost(int queryCount, List<Long>
timeCostList) {
+ System.out.printf("Running query %d times.%n", queryCount);
+ System.out.printf("Time cost of first query is %d ms.%n",
timeCostList.get(0) / 1_000_000L);
+ long sum = 0;
+ for (Long cost : timeCostList) {
+ sum += cost;
+ }
+ System.out.printf("Avg time cost is %d ms.%n", sum / timeCostList.size() /
1_000_000L);
+ long median;
+ int index = timeCostList.size() / 2;
+ if (timeCostList.size() % 2 == 0) {
+ median = (timeCostList.get(index - 1) + timeCostList.get(index)) / 2 /
1_000_000L;
+ } else {
+ median = timeCostList.get(index) / 1_000_000L;
+ }
+ System.out.printf("Median time cost is %d ms.%n", median);
}
}