Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как отдетектить запрос генерирующий temp-ы? / 7 сообщений из 7, страница 1 из 1
24.01.2007, 16:27
    #34279452
alex_v13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отдетектить запрос генерирующий temp-ы?
Ситуация такая.
С недавнего времени в папку psql_tmp для моей базы стали с большой интенсивностью писаться здоровенные temp-файлы - до гига, общим объемом до 15-20 ГБ. Понять по коду, какой запрос генерит такую странную дисковую активность и кто из разрабочиков чего менял, как всегда не удалось :)
Поэтому нужно как-то отследить запрос по факту исполнения. Какие идеи будут, народ?

Увеличение work_mem до самых неприличных значений не дало результата по снижению дисковой активности. Памяти свободно гиг-полтора, кэшируется столько же.. По видимому, какой-то глюк планировщика или непредсказуемое поведение какого-то запроса...
...
Рейтинг: 0 / 0
24.01.2007, 16:35
    #34279492
MaximZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отдетектить запрос генерирующий temp-ы?
ну на первый взгляд, когда начинает генериться файл, то можно что то поискать в системных таблицах pg_staе*. В мане есть их описание.
...
Рейтинг: 0 / 0
24.01.2007, 17:35
    #34279820
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отдетектить запрос генерирующий temp-ы?
alex_v13
Поэтому нужно как-то отследить запрос по факту исполнения. Какие идеи будут, народ?

Скорее всего мгновенно такие таблицы не создаеются, и запрос должен выполнятся долго. Можно попробовать включить логирование длинных запросов.
...
Рейтинг: 0 / 0
24.01.2007, 18:05
    #34279929
alex_v13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отдетектить запрос генерирующий temp-ы?
Включил логирование запросов длинее 5 сек...

Попались SELECT'ы вида:
Код: plaintext
select * from table1 t1 left join table2 t2 on (t1.id = t2.id) where t2.id IN(....) ;
внутри IN 20-30 записей.

table2 порядка 20 миллионов записей.
план запроса нрмальный, с bitmap scan

и UPDATE'ы вида:
Код: plaintext
UPDATE table2.key = value WHERE table2.id = ID;

UPDATE'ы, я так понимаю тормозят из-за нагрузки на винт.
pg_xlog и pgdata лежат на разных винтах, но это не помогает
...
Рейтинг: 0 / 0
25.01.2007, 06:10
    #34280544
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отдетектить запрос генерирующий temp-ы?
alex_v13Включил логирование запросов длинее 5 сек...

Пользуясь случаем спрошу. А где можно это настроить? Можете носом в ман ткнуть, не обижусь.
...
Рейтинг: 0 / 0
25.01.2007, 06:30
    #34280547
ChameLe0n
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отдетектить запрос генерирующий temp-ы?
log_min_duration_statement = 10000 # -1 is disabled, 0 logs all statements
# and their durations, in milliseconds.
...
Рейтинг: 0 / 0
25.01.2007, 11:55
    #34281368
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отдетектить запрос генерирующий temp-ы?
alex_v13Попались SELECT'ы вида:
Код: plaintext
select * from table1 t1 left join table2 t2 on (t1.id = t2.id) where t2.id IN(....) ;
и UPDATE'ы вида:
Код: plaintext
UPDATE table2.key = value WHERE table2.id = ID;
Покажите их explain analyze.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как отдетектить запрос генерирующий temp-ы? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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