
Аггей
18.10.2016
13:10:39
Чтобы сократить время запроса

tufedtm
18.10.2016
13:15:16
чтобы сократить время в дальнейшем
результат запроса, первые 10к строк будут в базе навечно, в отдельной таблице, а 50кк удаляться

Евгений
18.10.2016
13:22:34
а точно надо эти 50М строк выковыривать, если из них только 10К будет использовано? Нельзя ли как-то разбить на части, по-другому пофильтровать?
Тупо перечитать столько строк с диска - уже все время и уйдет туда.

tufedtm
18.10.2016
13:25:32
ага, ищутся дубли
SELECT
"t1"."item",
Count("t1"."item") AS count
FROM "itemstemp" AS t1
GROUP BY "t1"."item"
ORDER BY count DESC
LIMIT 10000;

Google

Аггей
18.10.2016
13:26:18
HAVING?
Тогда те строки что по 1 разу можно не выбирать
SELECT
"t1"."item",
Count("t1"."item") AS count
FROM "itemstemp" AS t1
GROUP BY "t1"."item"
HAVING Count("t1"."item")>1
В вашем запросе - если дублей будет 10 штук - то выведет 9990 недублей все равно

Максим
18.10.2016
13:30:02
прости пожалуйста если обижу
и если оффтоп
но твоё имя это как бы говорили "массив" если бы была картавость?
типа array

Аггей
18.10.2016
13:30:53
)) Ну типа того ))

Максим
18.10.2016
13:31:00
прикольно)

Аггей
18.10.2016
13:31:29
Думаю имя еще с тех времен когда массивов небыло... но кортавость наверняка была

Максим
18.10.2016
13:31:43
ну вот
теперь буду гуглить что появилось раньше

Google

Максим
18.10.2016
13:31:53
массив или твоё имя
занял меня на вечер

tufedtm
18.10.2016
13:42:39

Andrey
18.10.2016
13:43:54

tufedtm
18.10.2016
13:44:57
сделал
быстрее не стало

Andrey
18.10.2016
13:48:03

Аггей
18.10.2016
13:55:22
А о чем план говорит?

Alexey
18.10.2016
14:00:27
Даже на моём 30" мониторе ни хрена не разобрать на этом скриншоте.

Alex
18.10.2016
14:03:22
а воркмем и шаред бафферс сколько ?

Sergey
18.10.2016
14:03:44
А если work_mem увеличить?
set work_mem to '2GB';

Alex
18.10.2016
14:04:04
+

tufedtm
18.10.2016
14:05:46
shared_buffers = 2GB
work_mem = 34952kB

Alex
18.10.2016
14:06:54
попробуй увеличить, work_mem до гига хотя бы

Аггей
18.10.2016
14:07:05
Всего у вас 13к строк после having

Alex
18.10.2016
14:07:06
ну и shared_buffers задрать побольше

Аггей
18.10.2016
14:07:34
И план новый в студию
А то опять нечитаемо

tufedtm
18.10.2016
14:08:58
это после set work_mem to '2GB';

Google

Аггей
18.10.2016
14:09:10
Странно, что опять диск использует

tufedtm
18.10.2016
14:11:39
указал в конфигах
shared_buffers = 4GB
work_mem = 2GB
перезапустил
так же

Alex
18.10.2016
14:12:32
а размер базы какой ?

tufedtm
18.10.2016
14:12:56
3,2 гига

Alex
18.10.2016
14:13:08
забавно

Vadim
18.10.2016
14:13:54
Есть индекс по полю item?

tufedtm
18.10.2016
14:15:23
указал по 4гб
стало 37 секунд
но теперь сжирает озу

Vadim
18.10.2016
14:17:20
У вас одинаковые значения в поле item на сколько часто встречаются?

tufedtm
18.10.2016
14:17:49

Vadim
18.10.2016
14:19:34
А можно создать индекс по полю item и прислать план запроса?

Alex
18.10.2016
14:22:10
не понимаю как там индекс поможет... там же count

Ildar
18.10.2016
14:22:53

Andrey
18.10.2016
14:24:33

tufedtm
18.10.2016
14:25:26
вот с индексом

Alex
18.10.2016
14:25:46
и видимо уперется в CPU
=)

Maksim
18.10.2016
14:28:31
попробуйте индекс кластеризовать

Google

tufedtm
18.10.2016
14:34:55
стало хуже почему то

Maksim
18.10.2016
14:35:53
Да нет, всё правильно. Там же IndexOnlyScan

tufedtm
18.10.2016
14:37:03
тогда не нужны индексы выходит

Admin
ERROR: S client not available

Ildar
18.10.2016
14:37:51
вообще странно, что планировщик выбрал план с индексом, но запрос стал работать в полтора раза медленнее. Может дело в статистике?
vacuum analyze можно прогнать

Alex
18.10.2016
14:38:33
а СPU usage что показывает при выполнении ?

tufedtm
18.10.2016
14:38:36
и теперь он без временного файла, есть по 2гб озу на запрос
хотя конфиг вернул к начальному

Alex
18.10.2016
14:38:39
какой нить atop

tufedtm
18.10.2016
14:39:18

Alex
18.10.2016
14:39:48
Ну как бе вот и ответ...

tufedtm
18.10.2016
14:41:42
так он и без индексов упиравется в ядро
как писал выше
но делает запрос за 45-50 секунд

Аггей
18.10.2016
14:41:45

tufedtm
18.10.2016
14:44:31

Аггей
18.10.2016
14:44:50

Alex
18.10.2016
14:46:04
а версия пг какая ?

Евгений
18.10.2016
14:46:05
как часто они меняются? промаркируйте уникальные записи и сделайте по ним индекс, тогда вы быстро вытащите то, что нужно.

Аггей
18.10.2016
14:46:07
Тут вообще берется вся таблица - и индекс для выборки не используется - только для сортировки

Google

Alex
18.10.2016
14:46:18
в 9.6 агрегаты норм параллеляться
если без фанатизма
и не очень нажимать

Alex
18.10.2016
14:46:45
в теории можно и секционировать табличку

Alex
18.10.2016
14:47:16
это если партиции есть нормальные

Айтуар
18.10.2016
14:47:31

Darafei
18.10.2016
14:48:21

tufedtm
18.10.2016
14:48:22

Alex
18.10.2016
14:48:38
по нагрузке на цпу чтот не заметно
хотя какие настройки ?

Alex
18.10.2016
14:49:06

tufedtm
18.10.2016
14:49:36
хотя какие настройки ?
если вы про
max_worker_processes и max_parallel_workers_per_gather
то я их задавал 8 и 4 соответственно
ядра грузились
но лучше не стало

Alex
18.10.2016
14:53:23
ядра или ядро
в плане была параллельность
?