From db4826447bde4bb6d79971699eb7ecc576f2712a Mon Sep 17 00:00:00 2001 From: Jake Loo <2171134+jakeloo@users.noreply.github.com> Date: Sat, 13 Sep 2025 16:28:55 +0000 Subject: [PATCH 1/3] Partition token_balances --- .../tools/clickhouse/0008_clickhouse_create_token_balances.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql b/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql index 522d12f..ab33857 100644 --- a/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql +++ b/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql @@ -62,6 +62,6 @@ CREATE TABLE IF NOT EXISTS token_balances ) ) ENGINE = ReplacingMergeTree(insert_timestamp, is_deleted) -PARTITION BY chain_id +PARTITION BY (chain_id, toStartOfQuarter(block_timestamp)) ORDER BY (chain_id, owner_address, token_address, token_id, block_number, transaction_index, log_index, direction) SETTINGS index_granularity = 8192, lightweight_mutation_projection_mode = 'rebuild', deduplicate_merge_projection_mode = 'rebuild', allow_part_offset_column_in_projections=1; \ No newline at end of file From 144585d2633f77d2feef15c93c1ff8c9ca0eb3fb Mon Sep 17 00:00:00 2001 From: Jake Loo <2171134+jakeloo@users.noreply.github.com> Date: Mon, 15 Sep 2025 16:20:34 +0000 Subject: [PATCH 2/3] Index block number --- .../tools/clickhouse/0006_clickhouse_create_token_transfers.sql | 1 + .../tools/clickhouse/0008_clickhouse_create_token_balances.sql | 1 + 2 files changed, 2 insertions(+) diff --git a/internal/tools/clickhouse/0006_clickhouse_create_token_transfers.sql b/internal/tools/clickhouse/0006_clickhouse_create_token_transfers.sql index edb92cb..4eb1c59 100644 --- a/internal/tools/clickhouse/0006_clickhouse_create_token_transfers.sql +++ b/internal/tools/clickhouse/0006_clickhouse_create_token_transfers.sql @@ -17,6 +17,7 @@ CREATE TABLE IF NOT EXISTS token_transfers `insert_timestamp` DateTime DEFAULT now(), `is_deleted` UInt8 DEFAULT 0, + INDEX idx_block_number block_number TYPE minmax GRANULARITY 1, INDEX idx_block_timestamp block_timestamp TYPE minmax GRANULARITY 1, INDEX idx_from_address from_address TYPE bloom_filter GRANULARITY 3, INDEX idx_to_address to_address TYPE bloom_filter GRANULARITY 3, diff --git a/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql b/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql index ab33857..ecf58e8 100644 --- a/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql +++ b/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql @@ -20,6 +20,7 @@ CREATE TABLE IF NOT EXISTS token_balances `insert_timestamp` DateTime DEFAULT now(), `is_deleted` UInt8 DEFAULT 0, + INDEX idx_block_number block_number TYPE minmax GRANULARITY 1, INDEX idx_block_timestamp block_timestamp TYPE minmax GRANULARITY 1, INDEX idx_token_address token_address TYPE bloom_filter GRANULARITY 3, INDEX idx_owner_address owner_address TYPE bloom_filter GRANULARITY 3, From 7e4530fc073f16fc3218c8bee36ce3fd54fe9786 Mon Sep 17 00:00:00 2001 From: Jake Loo <2171134+jakeloo@users.noreply.github.com> Date: Wed, 17 Sep 2025 21:21:05 +0000 Subject: [PATCH 3/3] Update schema --- .../0002_clickhouse_create_logs_table.sql | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/internal/tools/clickhouse/0002_clickhouse_create_logs_table.sql b/internal/tools/clickhouse/0002_clickhouse_create_logs_table.sql index d4e202c..44e598e 100644 --- a/internal/tools/clickhouse/0002_clickhouse_create_logs_table.sql +++ b/internal/tools/clickhouse/0002_clickhouse_create_logs_table.sql @@ -37,16 +37,23 @@ CREATE TABLE IF NOT EXISTS logs ( transaction_index, log_index ), - PROJECTION chain_topic0_projection + PROJECTION chain_address_block_number_full_projection + ( + SELECT + * + ORDER BY + chain_id, + address, + block_number + ), + PROJECTION chain_topic0_full_projection ( SELECT - _part_offset + * ORDER BY chain_id, topic_0, block_number, - transaction_index, - log_index, address ), PROJECTION address_topic0_state_projection