0

查询中没有连接,它是一个具有两个不同计数的简单查询。但是它消耗了超过9k的cpu。

我已经获取了必要的统计信息,但无法减少 CPU。请提出一些减少CPU的好方法

你能告诉我什么是减少影响CPU的最佳方法吗

4

1 回答 1

0

我认为目标表是 SET 表,因此您的查询占用了大量 CPU(重复行消除)。

1) 在 MULTISET 表上测试您的选择查询。

insert into multiset_table
select count(distinct col1) from source_table.

而且我相信您的主索引是倾斜的,这是影响 CPU 的原因。

2)确保您的主索引是唯一的。

select hashamp(hashbucket(hashrow(<primary index columns>))), count(*) (bigint) cnt from target_table group by 1 order by 2 desc;

如果 cnt 列分布不均匀,则更改具有更多唯一列的表的主索引。

只有两件事会导致合并运行缓慢,1)目标表是 SET 表 2)目标表的主索引严重倾斜

于 2018-07-25T16:36:55.563 回答