2024-11-30 13:47:41 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
# Tags: no-parallel, no-random-merge-tree-settings
|
|
|
|
|
|
|
|
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
|
|
# shellcheck source=../shell_config.sh
|
|
|
|
. "$CURDIR"/../shell_config.sh
|
|
|
|
$CLICKHOUSE_CLIENT --query "
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS t_prewarm_cache_rmt_1;
|
|
|
|
|
|
|
|
CREATE TABLE t_prewarm_cache_rmt_1 (a UInt64, b UInt64, c UInt64)
|
|
|
|
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{database}/03277_prewarms_caches/t_prewarm_cache', '1')
|
|
|
|
ORDER BY a
|
|
|
|
SETTINGS
|
|
|
|
index_granularity = 100,
|
|
|
|
min_bytes_for_wide_part = 0,
|
|
|
|
use_primary_key_cache = 1,
|
|
|
|
prewarm_primary_key_cache = 1,
|
|
|
|
prewarm_mark_cache = 1,
|
2024-12-02 15:05:47 +00:00
|
|
|
max_cleanup_delay_period = 1,
|
|
|
|
cleanup_delay_period = 1,
|
2024-11-30 13:47:41 +00:00
|
|
|
min_bytes_to_prewarm_caches = 30000;
|
|
|
|
|
|
|
|
SYSTEM DROP MARK CACHE;
|
|
|
|
SYSTEM DROP PRIMARY INDEX CACHE;
|
|
|
|
|
|
|
|
INSERT INTO t_prewarm_cache_rmt_1 SELECT number, rand(), rand() FROM numbers(100, 100);
|
|
|
|
INSERT INTO t_prewarm_cache_rmt_1 SELECT number, rand(), rand() FROM numbers(1000, 2000);
|
|
|
|
|
|
|
|
SYSTEM RELOAD ASYNCHRONOUS METRICS;
|
|
|
|
SELECT metric, value FROM system.asynchronous_metrics WHERE metric IN ('PrimaryIndexCacheFiles', 'MarkCacheFiles') ORDER BY metric;
|
|
|
|
|
|
|
|
SELECT count() FROM t_prewarm_cache_rmt_1 WHERE a % 2 = 0 AND a >= 100 AND a < 2000 AND NOT ignore(a, b);
|
|
|
|
|
|
|
|
SYSTEM RELOAD ASYNCHRONOUS METRICS;
|
|
|
|
SELECT metric, value FROM system.asynchronous_metrics WHERE metric IN ('PrimaryIndexCacheFiles', 'MarkCacheFiles') ORDER BY metric;
|
|
|
|
|
|
|
|
SYSTEM DROP MARK CACHE;
|
|
|
|
SYSTEM DROP PRIMARY INDEX CACHE;
|
|
|
|
|
|
|
|
OPTIMIZE TABLE t_prewarm_cache_rmt_1 FINAL;
|
|
|
|
|
|
|
|
SELECT count() FROM t_prewarm_cache_rmt_1 WHERE a % 2 = 0 AND a >= 100 AND a < 2000 AND NOT ignore(a, b);
|
|
|
|
|
|
|
|
SYSTEM RELOAD ASYNCHRONOUS METRICS;
|
|
|
|
SELECT metric, value FROM system.asynchronous_metrics WHERE metric IN ('PrimaryIndexCacheFiles', 'MarkCacheFiles') ORDER BY metric;
|
|
|
|
|
|
|
|
TRUNCATE TABLE t_prewarm_cache_rmt_1;
|
|
|
|
"
|
|
|
|
|
|
|
|
for _ in {1..100}; do
|
2024-12-02 15:05:47 +00:00
|
|
|
res=$($CLICKHOUSE_CLIENT -q "
|
|
|
|
SYSTEM RELOAD ASYNCHRONOUS METRICS;
|
|
|
|
SELECT value FROM system.asynchronous_metrics WHERE metric = 'PrimaryIndexCacheFiles';
|
|
|
|
")
|
2024-11-30 13:47:41 +00:00
|
|
|
if [[ $res -eq 0 ]]; then
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
sleep 0.3
|
|
|
|
done
|
|
|
|
|
|
|
|
$CLICKHOUSE_CLIENT --query "
|
|
|
|
SYSTEM RELOAD ASYNCHRONOUS METRICS;
|
|
|
|
SELECT metric, value FROM system.asynchronous_metrics WHERE metric IN ('PrimaryIndexCacheFiles', 'MarkCacheFiles') ORDER BY metric;
|
|
|
|
|
|
|
|
SYSTEM FLUSH LOGS;
|
|
|
|
|
|
|
|
SELECT
|
|
|
|
ProfileEvents['LoadedMarksFiles'],
|
|
|
|
ProfileEvents['LoadedPrimaryIndexFiles']
|
|
|
|
FROM system.query_log
|
|
|
|
WHERE current_database = currentDatabase() AND type = 'QueryFinish' AND query LIKE 'SELECT count() FROM t_prewarm_cache_rmt_1%'
|
|
|
|
ORDER BY event_time_microseconds;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS t_prewarm_cache_rmt_1;
|
|
|
|
"
|