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) {
