powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Тормозит поиск
10 сообщений из 10, страница 1 из 1
Тормозит поиск
    #35483804
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сервер FreeBSD (версию не помню, вроде 7.х) + PostgreSQL 8.2.
C некоторых пор начал замечать, что стал медленно работать поиск. Запросы, содержащие условие "client_name ilike ('%<кусок_фамилии>%')", выполняются секунд по 45. В поле client_name - ФИО клиентов, их всего в таблице около 30000. На другой машине с тестовой БД такой же запрос выполняется меньше секунды (на точной копии базы).
Я смотрел список процессов в системе (командой "top -s 1"). Процесс pgsql занимал около 10% процессорного времени, в поле STATE результата команды top (как я понимаю, состояние процесса?) периодически менялось getblk, sbwait и RUN. Причем последнее появлялось редко и на краткий период времени... Это все, что мне удалось накопать. Как я понял, основную часть времени (~44 секунд из 45) процесс чего-то ждет, а оставшуюся секунду выполняет поиск.
Запрос тестировался в том числе и в условиях, когда к базе было всего одно подключение - то есть мешающих факторов не было вообще...
Дайте хотя бы приблизительное направление - куда копать???
...
Рейтинг: 0 / 0
Тормозит поиск
    #35483875
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока не сделает
vacuum analyze,
а потом, если всес еще недовольны,
не покажете explain select....,
то тут с вами и разговаривать не станут.
...
Рейтинг: 0 / 0
Тормозит поиск
    #35484398
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadminпока не сделает
vacuum analyze,
а потом, если всес еще недовольны,
не покажете explain select....,
то тут с вами и разговаривать не станут.
Ну вот примерно про это я и спрашивал... Хоть какое-то направление...

vacuum analyze сделал. Все тоже самое.

explain select client_fio from data_clients where client_fio ilike ('%ива%')
Результат:
Seq Scan on data_clients (cost=0.00..329730.83 rows=9 width=55)
Filter: (client_fio ~~* '%ива%'::text)
...
Рейтинг: 0 / 0
Тормозит поиск
    #35484465
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделайте vacuum full analyze
...
Рейтинг: 0 / 0
Тормозит поиск
    #35484940
chAlx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поддерживаю насчёт вакуума: похоже, сборка мусора не проводилась ни разу (что для v8.2 странно). Это можно заметить по существенной разнице в размере файлов на рабочей базе и на восстановленной тестовой (которая шустрая).
...
Рейтинг: 0 / 0
Тормозит поиск
    #35485098
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я запустил full analyze, но пользователи стали жаловаться, что вообще перестело работать... Пришлось прервать. Щас пойду обедать и устрою маленькую диверсию... Запущу analyze и выключу телефон ))) Минут 10 они потерпят...
...
Рейтинг: 0 / 0
Тормозит поиск
    #35485119
chAlx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только это называется не analyze, а vacuum full . Он может длиться и больше 10 минут, т.к. "физически" вычищает все лишние версии. Так что лучше его запланировать на ночь, предварительно отключив клиентов (и запретив подключаться).

После этого желательно настроить автовакуум.
...
Рейтинг: 0 / 0
Тормозит поиск
    #35485354
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chAlxТолько это называется не analyze, а vacuum full .Так что лучше его запланировать на ночь, предварительно отключив клиентов (и запретив подключаться).
После этого желательно настроить автовакуум.

Поздняк метаться ))) 34 минуты - и готово. И вроде даже запросы быстрее выполняются (300 миллисекунд вместо 45 секунд ))) мелочь, а приятно)... Тут до меня другой человек базой занимался и видимо не очень хорошо... Так что у меня уже давно в плане стоит и автовакуум, и индексы, и т. д., и т.п.

Всем спасибо за помощь!
...
Рейтинг: 0 / 0
Тормозит поиск
    #35486350
Фотография ss25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
('%<кусок_фамилии>%')
запросы такого плана не используют индекс

Код: plaintext
1.
2.
3.
4.
explain select client_fio from data_clients where client_fio ilike ('%ива%')
Результат:
Seq Scan on data_clients (cost= 0 . 00 .. 329730 . 83  rows= 9  width= 55 )
Filter: (client_fio ~~* '%ива%'::text)

так что скоро будет тоже самое
...
Рейтинг: 0 / 0
Тормозит поиск
    #35486726
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ss25
Код: plaintext
('%<кусок_фамилии>%')
запросы такого плана не используют индексда, но SecScan по 30 тысячам строк выполняется меньше секунды. так что "усё нормуль".

ss25
Код: plaintext
1.
2.
3.
4.
explain select client_fio from data_clients where client_fio ilike ('%ива%')
Результат:
Seq Scan on data_clients (cost= 0 . 00 .. 329730 . 83  rows= 9  width= 55 )
Filter: (client_fio ~~* '%ива%'::text)

так что скоро будет тоже самоеесли включить autovacuum или периодически делать vacuum, то файл таблицы не разрастется, и опять же останется "усё нормуль".
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Тормозит поиск
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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