问题描述
桌子
CREATE TABLE events
(
site_id UInt64,name String
-- other columns
)
ENGINE = CollapsingMergeTree(sign_flag)
PARTITION BY site_id
ORDER BY (name)
SETTINGS index_granularity = 8192;
SELECT 'wtf',*
FROM events
WHERE site_id = 1 AND
name = 'some_name'
LIMIT 100000;
日志
SELECT formatReadableSize(read_bytes) AS read_bytes,formatReadableSize(memory_usage) AS memory_usage,formatReadableQuantity(read_rows) AS read_rows,query_duration_ms / 1000 AS query_duration_sec,query
FROM system.query_log
WHERE query LIKE '%wtf%'
ORDER BY
event_time DESC
LIMIT 100;
+------------+--------------+--------------+--------------------+
| read_bytes | memory_usage | read_rows | query_duration_sec |
+------------+--------------+--------------+--------------------+
| 578.41 MiB | 131.95 MiB | 1.01 million | 10.773 |
+------------+--------------+--------------+--------------------+
我认为日志中有非常大的数字。
如何优化它或者我错过了一些关于服务器配置的内容?
解决方法
考虑定义另一个主键 - 为此查询 ORDER BY (name,site_id)。
选择PK是设计中非常重要的一部分,选择正确的PK需要观察所有用例图。 查看更多详情: