powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Длительное выполнение операторов update ... set
3 сообщений из 3, страница 1 из 1
Длительное выполнение операторов update ... set
    #36097382
Alex_KH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, возникла проблема с длительным выполнением операторов update на Informix 9.3 Win 2003, база занимает около 20Гб в чанках. ОЗУ 4Гб, может кто-то подскажет как можно оптимизировать процесс: Выполняется update большого количества таблиц с помощью sql такого вида:
update table1 set row_1 = (select row_X1 from tmp_X where row_X2 = row_1) where row_1 = (select row_x3 from tmp_X where row_x3 = row_1);
update table2 set row_1 = (select row_X1 from tmp_X where row_X2 = row_1) where row_1 = (select row_x3 from tmp_X where row_x3 = row_1);
...
Выполнение идет крайне медленно, при этом нагрузки на диск практически нет, из 4 ядер двух процессоров используется только одно и постоянно на 100%. Обратил внимание на активную работу с буферами в памяти:
dskreads pagreads bufreads %cached dskwrits pagwrits bufwrits %cached
280626 289979 2996077508 99.99 2913 3635 4279 31.92

isamtot open start read write rewrite delete commit rollbk
191825491 4352 3719731 89859015 0 43 0 574 0

gp_read gp_write gp_rewrt gp_del gp_alloc gp_free gp_curs
0 0 0 0 0 0 0

ovlock ovuserthread ovbuff usercpu syscpu numckpts flushes
0 0 0 53050.78 17.95 15 357

bufwaits lokwaits lockreqs deadlks dltouts ckpwaits compress seqscans
16585 0 3650402416 0 0 0 1 3710760

ixda-RA idx-RA da-RA RA-pgsused lchwaits
154111 0 79635 233674 395


и насколько я понимаю громадную очередь ожидающую обработки процессором:

AIO I/O vps:
class/vp s io/s totalops dskread dskwrite dskcopy wakeups io/wup errors
kio 0 i 2.1 109600 109562 38 0 24617917 0.0 0
kio 1 i 0.0 567 5 562 0 65288 0.0 0
kio 2 i 0.0 169 0 169 0 17716 0.0 0
kio 3 i 0.0 273 43 230 0 77073 0.0 0
msc 0 i 0.0 0 0 0 0 0 0.0 0
aio 0 i 0.0 0 0 0 0 0 0.0 0
pio 0 i 0.0 0 0 0 0 0 0.0 0
lio 0 i 0.0 0 0 0 0 0 0.0 0

Можно ли в данной ситуации каким-то образом изменяя настройки Informix ускорить обработку...
...
Рейтинг: 0 / 0
Длительное выполнение операторов update ... set
    #36098050
skill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_KH,

используй индексы, чтобы уменьшить seqscans.
...
Рейтинг: 0 / 0
Длительное выполнение операторов update ... set
    #36098217
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_KHможет кто-то подскажет как можно оптимизировать процесс: Выполняется update большого количества таблиц с помощью sql такого вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
update table1 
  set row_1 = (
    select row_X1 
      from tmp_X 
        where  row_X2 = row_1
  )
    where row_1 = (
      select row_x3 
        from tmp_X 
          where row_x3 = row_1
    );

update table2 ...
...
Код: plaintext
1.
2.
3.
4.
dskreads pagreads bufreads   %cached dskwrits pagwrits bufwrits %cached
280626   289979   2996077508 99.99   2913     3635     4279     31.92  

lockreqs   seqscans
3650402416 3710760 


CREATE INDEX idx1
ON table1(row_1);

CREATE INDEX idx2
ON tmp_X(row_X2);

CREATE INDEX idx3
ON tmp_X(row_X3);

UPDATE STATISTICS LOW FOR TABLE tmp_X;


если по table1, table2, ... нет статистики, то и по ним не помешает хотя бы UPDATE STATISTICS LOW ...

Если не поможет,


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SET EXPLAIN ON;
update table1 
  set row_1 = (
    select row_X1 
      from tmp_X 
        where  row_X2 = row_1
  )
    where row_1 = (
      select row_x3 
        from tmp_X 
          where row_x3 = row_1
    );
SET EXPLAIN OFF;
и explain.out с сервера сюда...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Длительное выполнение операторов update ... set
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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