2017-01-26 18 views
0

我设计了一个jsonb列存储用户列表的表,并且我在该列上设置了一个杜松子酒索引。在表像Postgresql杜松子酒索引高cpu使用率

`[{"Username":"a01"},{"Username":"a02"},{"Username":"a03"}....`] 

select * from table where userlist @> '"Username":"a01"'::josnb 

我的数据类型,当我有后端单元测试,查询速度快了。

但是当我写了一个函数来调用这个sp,我发现它有非常高的CPU使用率问题(几乎100%)。

当我真空表并重新索引这个DB后,它下降到80%,但它仍然很高。

我不知道如何减少这个问题。 如果你有任何想法,我期待着你的建议,谢谢。

DECLARE @EndCNT; 
SET @EndCNT = 10000; 

WHILE @EndCNT > 0 
BEGIN 

SELECT public.query_cust('a01'); 
SET @EndCNT = @EndCNT - 1; 
END 

回答

0

最后,我发现它是jsonb数据类型的问题。

如果存储过长的jsonb数据,当系统将数据加载到内存中时,它会产生不可避免的高CPU使用率。