You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ko...@apache.org on 2026/03/30 07:33:08 UTC
(ignite-3) 01/01: WIP
This is an automated email from the ASF dual-hosted git repository.
korlov pushed a commit to branch korlov_wip
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 0bc949df4e8ea7743cbdfb44417317f8adc1ea8f
Author: korlov42 <ko...@apache.org>
AuthorDate: Mon Mar 30 10:32:50 2026 +0300
WIP
---
.../internal/benchmark/SqlIndexScanBenchmark.java | 62 +++++++++++++---------
.../sql/engine/prepare/PrepareServiceImpl.java | 6 +--
.../engine/statistic/SqlStatisticManagerImpl.java | 2 +-
3 files changed, 40 insertions(+), 30 deletions(-)
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/SqlIndexScanBenchmark.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/SqlIndexScanBenchmark.java
index 81d63cf6ccc..56b880edf11 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/SqlIndexScanBenchmark.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/SqlIndexScanBenchmark.java
@@ -22,6 +22,7 @@ import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
import java.nio.file.Files;
import java.time.LocalDate;
import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
import org.apache.ignite.internal.util.SubscriptionUtils;
@@ -52,7 +53,7 @@ import org.openjdk.jmh.runner.options.OptionsBuilder;
*/
@State(Scope.Benchmark)
@Fork(1)
-@Threads(1)
+@Threads(40)
@Warmup(iterations = 10, time = 2)
@Measurement(iterations = 20, time = 2)
@BenchmarkMode(Mode.AverageTime)
@@ -69,15 +70,18 @@ public class SqlIndexScanBenchmark extends AbstractMultiNodeBenchmark {
private static final String DATASET_READY_MARK_FILE_NAME = "ready.txt";
- private static final String SELECT_STATEMENT_TEMPLATE = "SELECT {} t.* FROM test t WHERE val >= ? LIMIT ?";
+ private static final String SELECT_STATEMENT_TEMPLATE = "SELECT {} t.* FROM test t WHERE val >= ? ORDER BY val LIMIT ?";
private static final int TABLE_SIZE = 1_500_000;
private static final LocalDate INITIAL_DATE = LocalDate.of(1970, 1, 1);
- @Param({"1", "1000", "10000", "100000"})
+ @Param({"100"})
private int limit;
- @Param({"FIRST_N", "LAST_N"})
+ @Param({"96"})
+ private int partitions;
+
+ @Param({/*"FIRST_N",*/ "RND"})
private ScanMode scanMode;
private IgniteSql sql;
@@ -91,7 +95,7 @@ public class SqlIndexScanBenchmark extends AbstractMultiNodeBenchmark {
if (!Files.exists(workDir().resolve(DATASET_READY_MARK_FILE_NAME))) {
sql.executeScript(
- "CREATE ZONE single_partition_zone (replicas 1, partitions 1) STORAGE PROFILES ['default'];"
+ "CREATE ZONE single_partition_zone (replicas 1, partitions " + partitions + ") STORAGE PROFILES ['default'];"
+ "CREATE TABLE test (id INT PRIMARY KEY, val DATE) ZONE single_partition_zone;"
+ "CREATE INDEX test_val_idx ON test(val);"
);
@@ -116,16 +120,16 @@ public class SqlIndexScanBenchmark extends AbstractMultiNodeBenchmark {
throw e;
}
}
-
- /** Measures performance of scan over a table. */
- @Benchmark
- public void forceTableScan(ForceTableScanState state, Blackhole bh) {
- try (var rs = sql.execute(state.query, startDate, limit)) {
- while (rs.hasNext()) {
- bh.consume(rs.next());
- }
- }
- }
+//
+// /** Measures performance of scan over a table. */
+// @Benchmark
+// public void forceTableScan(ForceTableScanState state, Blackhole bh) {
+// try (var rs = sql.execute(state.query, startDate, limit)) {
+// while (rs.hasNext()) {
+// bh.consume(rs.next());
+// }
+// }
+// }
/** Measures performance of scan over an index. */
@Benchmark
@@ -136,16 +140,16 @@ public class SqlIndexScanBenchmark extends AbstractMultiNodeBenchmark {
}
}
}
-
- /** Measures performance of an optimizer's decision about what to use for particular query. */
- @Benchmark
- public void optimizatorChoiceScan(OptimizatorChoiceState state, Blackhole bh) {
- try (var rs = sql.execute(state.query, startDate, limit)) {
- while (rs.hasNext()) {
- bh.consume(rs.next());
- }
- }
- }
+//
+// /** Measures performance of an optimizer's decision about what to use for particular query. */
+// @Benchmark
+// public void optimizatorChoiceScan(OptimizatorChoiceState state, Blackhole bh) {
+// try (var rs = sql.execute(state.query, startDate, limit)) {
+// while (rs.hasNext()) {
+// bh.consume(rs.next());
+// }
+// }
+// }
/**
* Benchmark's entry point.
@@ -199,7 +203,7 @@ public class SqlIndexScanBenchmark extends AbstractMultiNodeBenchmark {
@Override
protected int nodes() {
- return 1;
+ return 3;
}
@Override
@@ -220,6 +224,12 @@ public class SqlIndexScanBenchmark extends AbstractMultiNodeBenchmark {
return INITIAL_DATE;
}
},
+ RND {
+ @Override
+ LocalDate valueForPredicate(int limit) {
+ return INITIAL_DATE.plusDays(ThreadLocalRandom.current().nextInt(TABLE_SIZE - limit));
+ }
+ },
/**
* In this mode we will scan last N rows in ascending order.
*
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImpl.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImpl.java
index 23e3de6d833..6bdc8963fd9 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImpl.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImpl.java
@@ -1329,9 +1329,9 @@ public class PrepareServiceImpl implements PrepareService {
}
private static void logPlan(String queryString, ExplainablePlan plan) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Plan prepared: \n{}\n\n{}", queryString, plan.explain());
- }
+// if (LOG.isDebugEnabled()) {
+ LOG.info("Plan prepared: \n{}\n\n{}", queryString, plan.explain());
+// }
}
private static class RelWithMetadata {
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/statistic/SqlStatisticManagerImpl.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/statistic/SqlStatisticManagerImpl.java
index f16bc19ca4f..ea499456791 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/statistic/SqlStatisticManagerImpl.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/statistic/SqlStatisticManagerImpl.java
@@ -146,7 +146,7 @@ public class SqlStatisticManagerImpl extends AbstractEventProducer<StatisticChan
staleRowsCheckIntervalSeconds.listen(updateRefreshIntervalListener);
int seconds = staleRowsCheckIntervalSeconds.value();
- schedule(0, seconds);
+ schedule(0, 3);
}
private CompletableFuture<?> updateConfig(ConfigurationNotificationEvent<Integer> ctx) {