Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Медленный Update / 11 сообщений из 11, страница 1 из 1
15.01.2008, 02:11
    #35061270
Angel13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
Всем привет.

Возникла такая проблема. Есть таблица (довольно широкая, порядка 40 полей)
Код: plaintext
customer_profile
Есть скрипт который я хочу выполнить
Код: plaintext
update customer_profile set src_subsystem = 'System1' where src_subsystem = 'System2'
в таблице 2М записей. Update должен затронуть порядка 30-40%. Индексов по полю src_subsystem нет.
План Update'а - просто seq scan.

Запрос выполняется очень долго. Более часа. Вот сейчас ставлю выполняться на ночь.

Никак не могу понять в чём проблема. в логах - тишина. Vacuum analyse делал перед стартом. к БД только 1 подключение. При этом загрузка процессора не превышает 5-7%. Блокировок в базе нет, кроме тех, что порождены самим update'ом.

Подскажите в какую сторону копать?
...
Рейтинг: 0 / 0
15.01.2008, 02:26
    #35061276
Angel13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
нашёл пост Link
Касательно памяти. какие параметры изменять?
...
Рейтинг: 0 / 0
15.01.2008, 07:36
    #35061355
Oleg Bartunov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
Angel13Всем привет.

Возникла такая проблема. Есть таблица (довольно широкая, порядка 40 полей)
Код: plaintext
customer_profile
Есть скрипт который я хочу выполнить
Код: plaintext
update customer_profile set src_subsystem = 'System1' where src_subsystem = 'System2'
в таблице 2М записей. Update должен затронуть порядка 30-40%. Индексов по полю src_subsystem нет.
План Update'а - просто seq scan.

Запрос выполняется очень долго. Более часа. Вот сейчас ставлю выполняться на ночь.

Никак не могу понять в чём проблема. в логах - тишина. Vacuum analyse делал перед стартом. к БД только 1 подключение. При этом загрузка процессора не превышает 5-7%. Блокировок в базе нет, кроме тех, что порождены самим update'ом.

Подскажите в какую сторону копать?

30-40% от 2M это 600-800K поисков, без индексов ? Сколько выполняется один поиск ? Помножь на общее количество поисков.

И вообще, научитесь постить необходимую информацию:
1. Версия Постгреса
2. Операционная система
3. Схема релевантных таблиц - у вас там, случаем, нет foreign key ?
4. Запрос и его EXPLAIN ANALYZE
5. Если нужно, то минимальный пример, иллюстрирующий проблему, в формате copy & paste
в psql

Тогда занятые люди не будут гадать и смогут эффективно помочь
...
Рейтинг: 0 / 0
15.01.2008, 12:39
    #35062260
Angel13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
Oleg Bartunov 1. Версия Постгреса
2. Операционная система
Postgres - 8.2, OS - RHEL

Oleg Bartunov 3. Схема релевантных таблиц - у вас там, случаем, нет foreign key ?
По полю которое я обновляю FK нет. Оно так же не входит ни в один индекс.

EXPLAIN ANALYZE запустить днём не могу на live enviroment. Он сильно вешает систему.
...
Рейтинг: 0 / 0
15.01.2008, 12:43
    #35062282
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
а триггеров на апдейт нет? (в дополнение к фк и чекам).
...
Рейтинг: 0 / 0
15.01.2008, 13:11
    #35062420
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
vmstat, iostat во время выполнения запроса?
...
Рейтинг: 0 / 0
15.01.2008, 13:12
    #35062426
Angel13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ikea=# explain ANALYZE update customer_profile set src_subsystem = 'FTP IMPORT' where src_subsystem = 'Rahman';
                                                          QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------
 Seq Scan on customer_profile  (cost= 0 . 00 .. 98375 . 00  rows= 9829  width= 1033 ) (actual time= 45 . 556 .. 10395 . 760  rows= 241514  loops= 1 )
   Filter: ((src_subsystem)::text = 'Rahman'::text)
 Trigger for constraint fk_customer_fk_custom_country: time= 0 . 120  calls= 6 
 Total runtime:  601631 . 502  ms
...
Рейтинг: 0 / 0
15.01.2008, 13:28
    #35062484
Angel13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
Код: plaintext
1.
2.
3.
4.
[imp44_user@imp44back01 ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
  0    1    50412    14300    36732   817864      0      0      45     103      0       0    2    0   97    1 


iostat команды нет
...
Рейтинг: 0 / 0
15.01.2008, 13:38
    #35062529
Angel13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
после некоторого времени buff резко упал:


Код: plaintext
1.
2.
3.
4.
[imp44_user@imp44back01 ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
  0    1    50408    14940     6476   880908      0      0      45     103      0       0    2    0   97    1 
...
Рейтинг: 0 / 0
15.01.2008, 13:47
    #35062570
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
одной записи vmstat не достаточно, вам необходимо наблюдать как меняется загрузка системы при выполнении запроса. поглянте man vmstat, я навскидку опций не помню

iostat вероятно идет отдельным пакетом
...
Рейтинг: 0 / 0
15.01.2008, 20:16
    #35063903
Gold_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный Update
индексов много?

для всех версий записи создается версия индекса (поправте гуру, если не так)
как делал я бы
удалил бы индексы..
попробовал на части.. если время приемлемое, то на всех, создал бы индексы.
если не приемлемое, то удалил бы FK, чеки. триггеры. с помощью Copy создал бы требуемый текстовый файл (с требуемым апдейтом)
TRUNCATE...
copy созданый файл
востановление индексов, чеков, FK, триггеров
Примерно так.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Медленный Update / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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