
Anton
11.04.2017
08:39:30

Denis
11.04.2017
08:40:42
Я бы по миллиону строк для начала поделил

Ascandar
11.04.2017
08:41:38
Если сделаете, пишите)
мониторил весь, ничего такого как вчера не нашел. Я делал доп оптимизации в БД, плюс тех регламентые обслуживание типа вакуум и аналайз. Жду пока вылезет ошибка и запишется проблемный запрос в лог.

Denis
11.04.2017
08:42:22

Google

Ascandar
11.04.2017
08:42:57
такая штука была давно, как решил тоже не помню, но там тоаст разрос до 60гб
не мог даже сделать дапм базы
что хранили там, без понятие, есть подозрение, что весь мусор снесли там и стало норм

Denis
11.04.2017
08:45:26

Ascandar
11.04.2017
08:47:11
я честно говоря незнаю, 1С на уровне админа, поставить, ребуты и тд. Я в основном по серверу и БД(по работе в основном Oracle)
надо попробовать сделать произвольный от балды любое значение и проверить, count он делает быстро, вот считать все, насилует диск и все долго очень

Denis
11.04.2017
08:48:50
Я предлагаю не просто произвольное, но по которому больше всего найдётся строк

Ascandar
11.04.2017
08:54:01
учитываю, что запрос попадает FileName, то они все уникальны, только что проверил
если не указывать BinarData колонку, то запрос норм идет

Denis
11.04.2017
08:57:34
А можно explain analyze с binardata?
Ну и размер этого поля в запрашиваемой строчке

Lulz
11.04.2017
09:08:17
всем привет, как хранить ссылки на картинку в таблице? не могу примерно даже создать таблицу с каким типом поле. Спасибо

Google

Akzhan
11.04.2017
09:09:29
varchar? или речь не о ссылке, а о самой картинке?) тогда bytea

Lulz
11.04.2017
09:13:17
хм, точно, тупо адрес можно же в фс хранить

Ascandar
11.04.2017
09:16:14
"Index Scan using config_pkey on config (cost=0.41..8.43 rows=1 width=360) (actual time=0.021..0.022 rows=1 loops=1)"
" Index Cond: (filename = 'versions'::mvarchar)"
"Planning time: 0.109 ms"
"Execution time: 0.060 ms"

Denis
11.04.2017
09:18:38

Ascandar
11.04.2017
09:20:55
угу
explain analyze SELECT Creation,Modified,Attributes,DataSize,BinaryData
FROM Config WHERE FileName = 'versions' ORDER BY PartNo

Denis
11.04.2017
09:22:49
Вот подозреваю, что в некоторых строках лежат здоровенные бинарники, а в некоторых - маленькие. Посмотрите, какое максимальное значение размера бинарника среди строк. Мне кажется, на нем ошибка и проявится

Ascandar
11.04.2017
09:23:29
вот как это сделать то?
в оракле я знаю, тут нет

Denis
11.04.2017
09:25:18
Вроде length - https://www.postgresql.org/docs/8.2/static/functions-binarystring.html

Ascandar
11.04.2017
09:29:23
аа, точно, вчера же мне дали, а забыл посмотреьт результат
length 10 млн это ноорм?
SELECT Creation,Modified,Attributes,DataSize,BinaryData
FROM Config WHERE FileName = 'b2930bfd-5ede-4392-ae73-c4b28e5365fa.0' ORDER BY PartNo
выполнялся 17 секунд
учитывая там достаточно таких строк, неудивительно, что так долго

Denis
11.04.2017
09:33:07
Я не знаю, в чем измеряется length (надо посмотреть), но 10 млн - до черта))

Ascandar
11.04.2017
09:33:26
в символах наверняка

Denis
11.04.2017
09:36:48
Выполните octet_length - он в байтах

Anton
11.04.2017
09:36:50

Denis
11.04.2017
09:37:56
Конечно нужно обновить сервер - это вы только клиент для подключения (psql )обновили.

Google

Anton
11.04.2017
09:39:03

Igor
11.04.2017
09:40:03
нет, для сервера

Ascandar
11.04.2017
09:40:05

Denis
11.04.2017
09:40:06
Нет, он для сервера. Просто 9.6 при наличие 9.5 поднимается на не стандартном порту 5433

Ascandar
11.04.2017
09:40:18
получается 10мб на ячейку

Anton
11.04.2017
09:41:05
да, так есть, два инстанса
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 6494/postgres
tcp 0 0 127.0.0.1:5433 0.0.0.0:* LISTEN 6495/postgres

Denis
11.04.2017
09:41:11

Anton
11.04.2017
09:41:47
понял, спасибо

Ascandar
11.04.2017
09:45:03
больше 1мб - 56

Denis
11.04.2017
09:46:25
Можете ещё раз бросить вывод explain analyze для запроса на 17 сек

Ascandar
11.04.2017
09:47:07
"Index Scan using config_pkey on config (cost=0.41..10.24 rows=2 width=360) (actual time=0.027..0.030 rows=2 loops=1)"
" Index Cond: (filename = 'b2930bfd-5ede-4392-ae73-c4b28e5365fa.0'::mvarchar)"
"Planning time: 0.164 ms"
"Execution time: 0.067 ms"

Denis
11.04.2017
09:48:31
Он закэширован? Что-то быстро сейчас

Ascandar
11.04.2017
09:49:15
всегда так
я вчера увеличил кэш для БД до 2гб
если делать обычный запрос, а не просмотр плана - долго
почему то план и реальный запрос отличается

Sergey
11.04.2017
09:51:04

Ascandar
11.04.2017
09:51:13
аналайз

Google

Айтуар
11.04.2017
09:51:34

Denis
11.04.2017
09:51:54
А бросьте результат обычного запроса с включённым таймингом. Хочу в глаза на данные посмотреть.

Sergey
11.04.2017
09:52:55

Denis
11.04.2017
09:53:24
Вообще бред, 17 секунд считывать строку в 10 мб. У вас с дисками, где лежат таблицы все ок? Скорость чтения?
По индексам он ссылку на строку находит мгновенно

Sergey
11.04.2017
09:54:00

Darafei
11.04.2017
09:55:19
там же toast, оно блоками по 8кб хранит и собирает из осколков

Ascandar
11.04.2017
09:59:32

Denis
11.04.2017
10:00:39

Ascandar
11.04.2017
10:00:46
дисковая подсистема не айс, рейд интел с материнки 1

Admin
ERROR: S client not available

Ascandar
11.04.2017
10:00:51
какой было, такой и сделали

Denis
11.04.2017
10:01:34
А ядер сколько?
Посмотрите через iostat что происходит с дисками в момент запроса. И через htop - с ядрами

Ascandar
11.04.2017
10:05:49
тут виндоус стоит)
4 ядра + 4 потока
E3 1230
странность в том, что нагрузки ядра и диска не вижу

Denis
11.04.2017
10:09:11

Ascandar
11.04.2017
10:09:26
вот пытаюсь понят

Google

Denis
11.04.2017
10:10:39
Сбросьте кэш/выполните запрос с другим ключом - может оно в системный кэш ещё лазит сейчас

Sergey
11.04.2017
10:18:19
Может ещё сеть. Если клиент не на сервере, а где-нибудь подальше, то передача >10МБ по сети дело тоже не быстрое.
Если нет CPU affinity то на 4 ядра + 4 потока средне-ровная загрузка всех восьми HT-ядер на 1/8 как раз даст ОДИН во всю работающий процесс

Ascandar
11.04.2017
10:23:03
сеть не грузится, кэш сбросил, также выполняется
какая мистика блин
а что если сделать стораж с extented на external ?

Denis
11.04.2017
10:29:29
какая мистика блин
Я через час посмотрю - было расширение, которое позволяет залезть на низком уровне в таблицы и индексы. Может, там накопаем ответ. Но звучит крайне бредово. Даже если 10 мб состоит из раскиданных по всему диску чанков по 8кб, то должна быть нагрузка на диск. Да и все равно это слишком долго - 17 с

Sergey
11.04.2017
10:56:26

Ascandar
11.04.2017
11:08:47
я делаю локально
черз psql или pgadmin3

Sergey
11.04.2017
11:28:08
В момент выполнения долгого запроса в process list есть Postgres который есть 100% CPU?

Ascandar
11.04.2017
11:33:11
неа
очень страано

Darafei
11.04.2017
11:43:00
iowait?

Ascandar
11.04.2017
11:48:15
тоже ничего
толи винда гонит, толи какие то непонятные вещи происходят
смотрел в process explorer
единственное что больше становится это сеть 5мбайт

Denis
11.04.2017
12:03:14
я посмотрел документацию. когда создаем таблицу с toast, для него создается вспомогательная таблица. в ней даные порезаны на чанки и собираются по идентификатору файла и порядку следования. вот эта таблица нас и интересует. посмотрите, как она называется и сколько планировщик идет в ней строк запросом select relname, reltuples from pg_class where oid = (select reltoastrelid from pg_class where relname = 'config');

Ascandar
11.04.2017
12:09:05
relname | reltuples
—---------------+---------—
pg_toast_341721 | 259795
(1 строка)

Denis
11.04.2017
12:10:10
данные в этой таблице вы можете посмотреть запросом select * from pg_toast.pg_toast_341721;
и посмотреть, как быстро оттуда выбирается ваш 10мб бинарник