2017-01-26 2 views
0

Я создаю таблицу с столбцом jsonb для хранения списка пользователей, и я настроил индекс gin в этом столбце.Postgresql gin index высокий коэффициент использования процессора

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

Мой тип данных в таблице, как

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

Когда я был блок бэкенд тест, скорость запросов было быстро.

Но когда я написал функцию для вызова этого sp, я обнаружил, что у него очень высокие отношения отношения к процессору (почти 100%).

После того, как я вакуумирую таблицу и переиндексирую эту БД, она до 80%, но она по-прежнему высока.

Я не знаю, как уменьшить проблему. если у вас есть идеи, я с нетерпением жду ваших предложений, спасибо.

DECLARE @EndCNT; 
SET @EndCNT = 10000; 

WHILE @EndCNT > 0 
BEGIN 

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

ответ

0

И наконец, я нашел проблему с данными типа jsonb.

Если вы храните слишком длинные данные jsonb, , когда система загружает данные в память, это делает неизбежным использование высоких коэффициентов.