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 <[email protected]>
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) {

Reply via email to