powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / REINDEX DATABASE выполняется уже 6 часов и конца не видно
18 сообщений из 43, страница 2 из 2
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38753171
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AltCtrlDel,

Меня очень смущают те планы что вы привели (т.е. такого просто не может быть).
Вы точно делали prepare 1 раз а explain analyze c разными did несколько раз?
Так как план должен был поменяться в какой то момент на перебор всех партиций (причем необратимо поменяться).
Попробуйте для очистки освести погонять explain analyze однажды prepared запроса с разными did.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38753201
думается
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AltCtrlDel<>после этого остаются висеть "зависшие" селекты. Только перезапуск постгреса их прибивает.
<> с этого места поподробнее, пжалста

перловые ф-ии ? внешние сервера от ара-кала?
что левого к базе прикрутили, признавайтесь

-- вот на этом всём где-то вы и висите, думается
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38753205
думается
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
думаетсяAltCtrlDel<>после этого остаются висеть "зависшие" селекты. Только перезапуск постгреса их прибивает.
<> с этого места поподробнее, пжалста

перловые ф-ии ? внешние сервера от ара-кала?
что левого к базе прикрутили, признавайтесь

-- вот на этом всём где-то вы и висите, думается
версия -- повисшие -- автономки, запускаемые из security defined ф-ий из-под postgres, процессы которого вы не прибивали. И они у вас в неразрешимом дедлоке (что от реиндекса не зависит), либо в очередях на уникъю, что от реиндекса немного зависит.
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38753211
думается
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что-то я не точен в высказываниях

еще поправка/уточнение/ версии про автономки
повисшие, которые не постгреса, -- запускаются с sec/def/ , написаны от постгреса, которые запустили свои автономки и ждут (терминейтом не кладутся, не получив возврат от автономок). если бы вы прибили их детей -- они бы и легли.
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38753480
AltCtrlDel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim BogukAltCtrlDel,
Меня очень смущают те планы что вы привели (т.е. такого просто не может быть).
Вы точно делали prepare 1 раз а explain analyze c разными did несколько раз?
Так как план должен был поменяться в какой то момент на перебор всех партиций (причем необратимо поменяться).
Попробуйте для очистки освести погонять explain analyze однажды prepared запроса с разными did.

Я сохраняю приведённый скрипт в файл и выполняю его с помощью psql.

Вот, ещё
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
prepare test3(int,int) as SELECT s from strdat where did=$1 and cid=28624 and datetime<=$2 order by datetime desc limit 1;
explain (analyze, costs, buffers, timing) execute test3(134,1411117512);
explain (analyze, costs, buffers, timing) execute test3(210,1399399261);
explain (analyze, costs, buffers, timing) execute test3(223,1410961708);
explain (analyze, costs, buffers, timing) execute test3(226,1411292950);
explain (analyze, costs, buffers, timing) execute test3(134,1411117512);
explain (analyze, costs, buffers, timing) execute test3(210,1399399261);
explain (analyze, costs, buffers, timing) execute test3(223,1410961708);
explain (analyze, costs, buffers, timing) execute test3(226,1411292950);



PREPARE
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=0.01..0.18 rows=1 width=26) (actual time=18.807..18.807 rows=1 loops=1)
Buffers: shared hit=5 read=2
-> Result (cost=0.01..12.08 rows=73 width=26) (actual time=18.806..18.806 rows=1 loops=1)
Buffers: shared hit=5 read=2
-> Merge Append (cost=0.01..12.08 rows=73 width=26) (actual time=18.806..18.806 rows=1 loops=1)
Sort Key: public.strdat.datetime
Buffers: shared hit=5 read=2
-> Index Scan Backward using strdat_pkey on strdat (cost=0.00..4.26 rows=1 width=520) (actual time=0.023..0.023 rows=0 loops=1)
Index Cond: ((did = 134) AND (datetime <= 1411117512) AND (cid = 28624))
Buffers: shared hit=4
-> Index Scan Backward using strdat_134_28624 on strdat_134 strdat (cost=0.00..6.90 rows=72 width=19) (actual time=18.781..18.781 rows=1 loops=1)
Index Cond: (datetime <= 1411117512)
Filter: (did = 134)
Buffers: shared hit=1 read=2
Total runtime: 18.868 ms
(15 rows)

QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=0.01..2.16 rows=1 width=144) (actual time=0.046..0.047 rows=1 loops=1)
Buffers: shared hit=3 read=1
-> Result (cost=0.01..8.60 rows=4 width=144) (actual time=0.044..0.044 rows=1 loops=1)
Buffers: shared hit=3 read=1
-> Merge Append (cost=0.01..8.60 rows=4 width=144) (actual time=0.042..0.042 rows=1 loops=1)
Sort Key: public.strdat.datetime
Buffers: shared hit=3 read=1
-> Index Scan Backward using strdat_pkey on strdat (cost=0.00..4.26 rows=1 width=520) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((did = 210) AND (datetime <= 1399399261) AND (cid = 28624))
Buffers: shared hit=1
-> Index Scan Backward using strdat_210_28624 on strdat_210 strdat (cost=0.00..4.28 rows=3 width=19) (actual time=0.036..0.036 rows=1 loops=1)
Index Cond: (datetime <= 1399399261)
Filter: (did = 210)
Buffers: shared hit=2 read=1
Total runtime: 0.094 ms
(15 rows)

QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=0.01..0.88 rows=1 width=69) (actual time=0.032..0.032 rows=1 loops=1)
Buffers: shared hit=4
-> Result (cost=0.01..8.73 rows=10 width=69) (actual time=0.031..0.031 rows=1 loops=1)
Buffers: shared hit=4
-> Merge Append (cost=0.01..8.73 rows=10 width=69) (actual time=0.029..0.029 rows=1 loops=1)
Sort Key: public.strdat.datetime
Buffers: shared hit=4
-> Index Scan Backward using strdat_pkey on strdat (cost=0.00..4.26 rows=1 width=520) (actual time=0.005..0.005 rows=0 loops=1)
Index Cond: ((did = 223) AND (datetime <= 1410961708) AND (cid = 28624))
Buffers: shared hit=1
-> Index Scan Backward using strdat_223_28624 on strdat_223 strdat (cost=0.00..4.33 rows=9 width=19) (actual time=0.024..0.024 rows=1 loops=1)
Index Cond: (datetime <= 1410961708)
Filter: (did = 223)
Buffers: shared hit=3
Total runtime: 0.077 ms
(15 rows)

QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=2.27..2.27 rows=1 width=270) (actual time=227.332..227.333 rows=1 loops=1)
Buffers: shared hit=1 read=18
-> Sort (cost=2.27..2.27 rows=2 width=270) (actual time=227.330..227.330 rows=1 loops=1)
Sort Key: public.strdat.datetime
Sort Method: top-N heapsort Memory: 25kB
Buffers: shared hit=1 read=18
-> Result (cost=0.00..2.26 rows=2 width=270) (actual time=16.240..227.257 rows=29 loops=1)
Buffers: shared hit=1 read=18
-> Append (cost=0.00..2.26 rows=2 width=270) (actual time=16.239..227.241 rows=29 loops=1)
Buffers: shared hit=1 read=18
-> Seq Scan on strdat (cost=0.00..0.00 rows=1 width=520) (actual time=0.001..0.001 rows=0 loops=1)
Filter: ((datetime <= 1411292950) AND (did = 226) AND (cid = 28624))
-> Index Scan Backward using strdat_226_28624 on strdat_226 strdat (cost=0.00..2.26 rows=1 width=19) (actual time=16.237..227.226 rows=29 loops=1)
Index Cond: (datetime <= 1411292950)
Filter: (did = 226)
Buffers: shared hit=1 read=18
Total runtime: 227.369 ms
(17 rows)

QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=0.01..0.18 rows=1 width=26) (actual time=0.015..0.015 rows=1 loops=1)
Buffers: shared hit=3
-> Result (cost=0.01..12.08 rows=73 width=26) (actual time=0.014..0.014 rows=1 loops=1)
Buffers: shared hit=3
-> Merge Append (cost=0.01..12.08 rows=73 width=26) (actual time=0.014..0.014 rows=1 loops=1)
Sort Key: public.strdat.datetime
Buffers: shared hit=3
-> Index Scan Backward using strdat_pkey on strdat (cost=0.00..4.26 rows=1 width=520) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((did = 134) AND (datetime <= 1411117512) AND (cid = 28624))
Buffers: shared hit=1
-> Index Scan Backward using strdat_134_28624 on strdat_134 strdat (cost=0.00..6.90 rows=72 width=19) (actual time=0.008..0.008 rows=1 loops=1)
Index Cond: (datetime <= 1411117512)
Filter: (did = 134)
Buffers: shared hit=2
Total runtime: 0.042 ms
(15 rows)

QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=0.01..2.16 rows=1 width=144) (actual time=0.010..0.011 rows=1 loops=1)
Buffers: shared hit=3
-> Result (cost=0.01..8.60 rows=4 width=144) (actual time=0.009..0.009 rows=1 loops=1)
Buffers: shared hit=3
-> Merge Append (cost=0.01..8.60 rows=4 width=144) (actual time=0.009..0.009 rows=1 loops=1)
Sort Key: public.strdat.datetime
Buffers: shared hit=3
-> Index Scan Backward using strdat_pkey on strdat (cost=0.00..4.26 rows=1 width=520) (actual time=0.005..0.005 rows=0 loops=1)
Index Cond: ((did = 210) AND (datetime <= 1399399261) AND (cid = 28624))
Buffers: shared hit=1
-> Index Scan Backward using strdat_210_28624 on strdat_210 strdat (cost=0.00..4.28 rows=3 width=19) (actual time=0.004..0.004 rows=1 loops=1)
Index Cond: (datetime <= 1399399261)
Filter: (did = 210)
Buffers: shared hit=2
Total runtime: 0.048 ms
(15 rows)

QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=0.01..0.88 rows=1 width=69) (actual time=0.010..0.010 rows=1 loops=1)
Buffers: shared hit=3
-> Result (cost=0.01..8.73 rows=10 width=69) (actual time=0.009..0.009 rows=1 loops=1)
Buffers: shared hit=3
-> Merge Append (cost=0.01..8.73 rows=10 width=69) (actual time=0.009..0.009 rows=1 loops=1)
Sort Key: public.strdat.datetime
Buffers: shared hit=3
-> Index Scan Backward using strdat_pkey on strdat (cost=0.00..4.26 rows=1 width=520) (actual time=0.004..0.004 rows=0 loops=1)
Index Cond: ((did = 223) AND (datetime <= 1410961708) AND (cid = 28624))
Buffers: shared hit=1
-> Index Scan Backward using strdat_223_28624 on strdat_223 strdat (cost=0.00..4.33 rows=9 width=19) (actual time=0.004..0.004 rows=1 loops=1)
Index Cond: (datetime <= 1410961708)
Filter: (did = 223)
Buffers: shared hit=2
Total runtime: 0.034 ms
(15 rows)

QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=2.27..2.27 rows=1 width=270) (actual time=0.035..0.036 rows=1 loops=1)
Buffers: shared hit=18
-> Sort (cost=2.27..2.27 rows=2 width=270) (actual time=0.035..0.035 rows=1 loops=1)
Sort Key: public.strdat.datetime
Sort Method: top-N heapsort Memory: 25kB
Buffers: shared hit=18
-> Result (cost=0.00..2.26 rows=2 width=270) (actual time=0.005..0.028 rows=29 loops=1)
Buffers: shared hit=18
-> Append (cost=0.00..2.26 rows=2 width=270) (actual time=0.005..0.027 rows=29 loops=1)
Buffers: shared hit=18
-> Seq Scan on strdat (cost=0.00..0.00 rows=1 width=520) (actual time=0.000..0.000 rows=0 loops=1)
Filter: ((datetime <= 1411292950) AND (did = 226) AND (cid = 28624))
-> Index Scan Backward using strdat_226_28624 on strdat_226 strdat (cost=0.00..2.26 rows=1 width=19) (actual time=0.004..0.023 rows=29 loops=1)
Index Cond: (datetime <= 1411292950)
Filter: (did = 226)
Buffers: shared hit=18
Total runtime: 0.056 ms
(17 rows)


Maxim Bogukс этого места поподробнее, пжалста
перловые ф-ии ? внешние сервера от ара-кала?
что левого к базе прикрутили, признавайтесь
К постгресу ничего не прикручивал и даже не из сорцов его ставил.
Признаюсь, что я не пробрасывал порты к серверу и всё делаю из Webmin-а. Может из за этого?
Я остановил апач, остановил приложение пишушее в базу. Они остановились (проверял по списку процессов), зашёл в Webmin-e Службы\Сервер баз данных PostgreSQL\postgres\Исполнить SQL, вставил
Код: sql
1.
select pg_terminate_backend(pid) from pg_stat_activity where usename<>'postgres';

- выполнилось. Посмотрел так же
Код: sql
1.
SELECT client_addr,backend_start,xact_start,query_start, query FROM pg_stat_activity;

- селекты висели. Может, подождать надо было. Но мне хотелось систему восстановить, я перезапустил постгрес.

Maxim Bogukверсия -- повисшие -- автономки, запускаемые из security defined ф-ий из-под postgres, процессы которого вы не прибивали. И они у вас в неразрешимом дедлоке (что от реиндекса не зависит), либо в очередях на уникъю, что от реиндекса
немного зависит.
еще поправка/уточнение/ версии про автономки
повисшие, которые не постгреса, -- запускаются с sec/def/ , написаны от постгреса, которые запустили свои автономки и ждут (терминейтом не кладутся, не получив возврат от автономок). если бы вы прибили их детей -- они бы и легли.

Тут я "поплыл". Что такое security defined ф-ий, которые запускаются с sec/def/ ?
Все эти селекты вызываются из мода апача, который использует для доступа к постгресу http://apr.apache.org/docs/apr/2.0/group___a_p_r___util___d_b_d.html , и вообще библиотеку apr на которой сам апач работает.

Апач я закрыл. Может он ещё не успел полностью закрыться? Попробую при следующем падении.

Логично напрашивается вопрос - нельзя ли прибивать "застрявшие" запросы к базе а не коннекты к ней?

Ну и отчего они застревают то? Ничего со словом security не использовалось.
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38753524
AltCtrlDel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Снова загрузка 100%. Остановил апач, прибил все его процессы, закрыл второе приложение. Всё что работает с базой прибито. По pg_stat_activity выдаётся

ts_age state query_age change_age datname pid usename waiting client_addr client_port query
01:15:11.548306 active 01:15:11.548306 01:15:11.548306 postgres 13510 postgres 0
-1 select GetBottomInfo(201)


Код: sql
1.
select pg_terminate_backend(pid) from pg_stat_activity where usename<>'postgres';

- выполняется но эффекта нет.
В списке процессов, на первом месте по загрузке проца
ID Владелец Использование CPU Команда
13510 postgres 4.9 % postgres: postgres postgres [local] SELECT

Если дедлок, то он же с чем то должен сцепиться? Не сам же с собой? Или с аутовакуумом?
Опять, же почему загрузка проца большая?
Я не знаю, где копать.

autovacuum = on
#log_autovacuum_min_duration = -1
autovacuum_max_workers = 4
autovacuum_naptime = 5s # Сброс в базу в приложении каждые 5 секунд, поэтому. Хотя, может неправильно.
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 10
autovacuum_vacuum_scale_factor = 0.02
autovacuum_analyze_scale_factor = 0.02
#autovacuum_freeze_max_age = 200000000
autovacuum_vacuum_cost_delay = 10ms
#autovacuum_vacuum_cost_limit = -1
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38753625
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AltCtrlDelСнова загрузка 100%. Остановил апач, прибил все его процессы, закрыл второе приложение. Всё что работает с базой прибито. По pg_stat_activity выдаётся

ts_age state query_age change_age datname pid usename waiting client_addr client_port query
01:15:11.548306 active 01:15:11.548306 01:15:11.548306 postgres 13510 postgres 0
-1 select GetBottomInfo(201)


Код: sql
1.
select pg_terminate_backend(pid) from pg_stat_activity where usename<>'postgres';

- выполняется но эффекта нет.
В списке процессов, на первом месте по загрузке проца
ID Владелец Использование CPU Команда
13510 postgres 4.9 % postgres: postgres postgres [local] SELECT

Если дедлок, то он же с чем то должен сцепиться? Не сам же с собой? Или с аутовакуумом?
Опять, же почему загрузка проца большая?
Я не знаю, где копать.

autovacuum = on
#log_autovacuum_min_duration = -1
autovacuum_max_workers = 4
autovacuum_naptime = 5s # Сброс в базу в приложении каждые 5 секунд, поэтому. Хотя, может неправильно.
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 10
autovacuum_vacuum_scale_factor = 0.02
autovacuum_analyze_scale_factor = 0.02
#autovacuum_freeze_max_age = 200000000
autovacuum_vacuum_cost_delay = 10ms
#autovacuum_vacuum_cost_limit = -1


скорее всего что копать надо в сторону переделки хранимок ваших
на execute 'sql' using variables; для тех запросов внутри хранимок которые партиционированные таблицы цепляют.


--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38753693
AltCtrlDel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я ранее написал, оставалось висеть select GetBottomInfo(201). Я перезапустил приложения и постгрес. Через пол часа опять 100% загрузка, всё снимаю, остаются висеть уже ДВА select GetBottomInfo(201). И именно 201. Что это как не испорченный индекс (или сама таблица?)? Запустил reindex table dat_201 - выполнилась быстро. Запустил систему снова.
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38753944
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AltCtrlDelКак я ранее написал, оставалось висеть select GetBottomInfo(201). Я перезапустил приложения и постгрес. Через пол часа опять 100% загрузка, всё снимаю, остаются висеть уже ДВА select GetBottomInfo(201). И именно 201. Что это как не испорченный индекс (или сама таблица?)? Запустил reindex table dat_201 - выполнилась быстро. Запустил систему снова.

когда проблема проявится опять
попробуйте руками прогнать выполнение залипающих запросов (До рестарта базы и reindex)
если они не залипают - значит проблема не в индексах


если залипают руками пройдитесь по всем запросам внутри хранимки и попробуйте найти тот что залипает
и через explain посмотреть его план.
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38753986
AltCtrlDel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Совет запоздал. я просто прибил партицию 201 (select count(*) from dat_201 показывало 0) и, вот уже два часа система работает с загрузкой винтов около процента. Перед этим я много раз делал реиндексы и полные и для этой таблицы только. Не помогало. Ощущение что повредилась сама таблица dat_201, а не индексы. Так может быть? Если да, то отчего?
Опять же, получается что CLUSTER такое не лечит. Не понятно как искать если снова случится.
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38754114
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AltCtrlDel,

> 201

а это старая/новая партиция?

что-то в ней есть особенного по ddl (sql-схеме) или по природе исходного "датчика"?

когда последний раз в неё лилось и как много?
были ли по ней массовые апдейты/делиты?
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38754115
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AltCtrlDel,

какой у вас 9.2?
как вы, откуда и когда на него апгрейдились?
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38754141
AltCtrlDel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Misha TyurinAltCtrlDel,
а это старая/новая партиция?
что-то в ней есть особенного по ddl (sql-схеме) или по природе исходного "датчика"?

Такой истории не имею. Партиция обычная, они все одинаковые, создаются хранимкой, в одном из постов выше я её приводил - create_part (в файле analiz.zip, прикреплённом к посту). Как я выше писал, вроде бы, пустая была (select count(*) from dat_201 показывало 0). Партиции нумеруются последовательно, по мере создания, сейчас последняя 244. Зная, к какому объекту она относилась, попытаюсь узнать, писалось ли что то в неё у пользователей. Вообще это ненормально, что 0 записей. Приложение создаёт партицию когда начинают идти данные от нового объекта и никогда не удаляет частями из партиции. На объект создаётся две партиции разных таблиц. dat и strdat, проблема была с dat (таблица партиции dat_201). Упрощённо - в dat информация в виде чисел, в strdat - в виде текстовых строк. Обычно записей в dat раз в 100 больше, и извлекаются чаще, так что вся нагрузка от dat.
(cм. analiz.zip) В последнее время из dat_201 пытались делать выборки - оттого и висло. Удалил я корректно, без нарушения структуры базы, т.е. и запись в таблице на неё ссылающеюся.

PostgreSQL 9.2.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit

Ранее был 9.1, но переход выполнялся давно (в конце мая 2013) и всё работало. Перенос через pg_dump - pg_restore.

ps: до сих пор работает, и загрузка не растёт. Прямо даже не верится. А то висло через полчаса.
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38754190
думается
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AltCtrlDel,
дело скорее всего не в индексах.

посмотрел на вашу висящую (код) -- если висит только она, то ничего внешнего там не дергается, при этом waiting у нее --0.

При 240 партициях я бы ожидал массу неприятностей от планировщика, если не адресоваться к партиции (руками) явно. (при порядка 100 парт. и по 6 индексов на партицию время (первичного) планирования , если все требуемые системные/статистические данные не в кеше, среднесложного запроса -- 10-ок с гаком секунд). Правда у вас запросы -- проще некуда.

Версия -- тупит планировщик (на этапе собственно выполнения терминейт не обламывался ни разу, если прибиваемый процесс не ждёт ответа от другого процесса -- о чём я, было, подумал).

Попробуйте обновиться, чес чёрт не шутит. Попробуйте выполнять через динамич. скл. -- тоже верная рекомендация для партицированных. можно наверное включить модуль фиксации планов во время выполнения -- попытаться понять, что там происходит. (на память не вспомню, поковыряюсь в загашнике, не уверен, что он фиксирует планы "внутре" ф-й.)
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38754552
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AltCtrlDel,

вооо... всё таки отличие какое-то есть. странный "0" строк. я бы разобрался с эти, откуда такое прилетело. это как минимум интересно, ну и может потенциально предупредить возобновление проблемы.

как это говорится, вангую, что дело именно в этом нуле или где-то около этого обстоятельства. у вас мог где-то вдруг индекскан начать перебирать всю пустоту в поисках нужного тупла. хотя вы и писали, что всё реиндексили, вакуумили, анализировали и прочее. возможно еще что из-за этого нуля.... нда.
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38754713
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AltCtrlDel,

А вы bloat проверяли для таблиц/индексов?

Возможно, в партицию 201 была попытка загрузить большой объем данных, но по какой-то причине транзакцию убили/отменили. Тогда при нулевом кол-ве видимых записей и в таблице, и в индексе будет много "deleted" кортежей (tuples). Это и место, и поиск в FSM.

У вас нету временных ограничений на работу процедур загрузки данных в приложении?
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38754933
AltCtrlDel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
думаетсяПри 240 партициях я бы ожидал массу неприятностей от планировщика, если не адресоваться к партиции (руками) явно.

На самом деле, основное число выборок приходится на
"SELECT cid,max(v),min(datetime) FROM dat_%s where (cid in (0,1,2,100)) and datetime between %d and %d group by cid,datetime / %d order by min(datetime)" где %s - номер партиции, и т.д.
В конфиге стоит log_min_duration_statement = 1000, по этому они редко в лог попадают - выполняются быстро.

А вот запись идёт в приложении через COPY dat FROM stdin with binary
Приложение-сборщик собирает данные со всех активных своих клиентов по 5с, пишет во входной поток COPY. Т.е. тут неявное обращение к партициям потому что в потоке идут данные для разных партиций. Но приложение-сборщик то как раз не падало, оно грузит то на 0.1%, основное выборки.
...
Рейтинг: 0 / 0
REINDEX DATABASE выполняется уже 6 часов и конца не видно
    #38754952
AltCtrlDel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorovА вы bloat проверяли для таблиц/индексов?
Нет. Думал что не нужно. Я выше писал что приложение никогда не удаляет отдельные записи из таблиц и не делает по ним UPDATE.
vyegorovВозможно, в партицию 201 была попытка загрузить большой объем данных, но по какой-то причине транзакцию убили/отменили.
Возможно. Опять же выше я писал, что часть пользователей имеет доступ к сереру и чуть что нажимали на нём ресет. Сейчас, вроде, отучили их от этого.
vyegorovТогда при нулевом кол-ве видимых записей и в таблице, и в индексе будет много "deleted" кортежей (tuples). Это и место, и поиск в FSM.
Сейчас уже поздно. И, честно говоря, я не знаю как и что смотреть в Free Space Map.

vyegorovУ вас нету временных ограничений на работу процедур загрузки данных в приложении?
нет.
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / REINDEX DATABASE выполняется уже 6 часов и конца не видно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]