Найти длительный запрос на Informix? - PullRequest
2 голосов
/ 09 сентября 2008

Как узнать, какие длительные запросы выполняются на сервере баз данных Informix? У меня есть запрос, который использует процессор и хочу узнать, что это за запрос.

Ответы [ 4 ]

5 голосов
/ 22 сентября 2008

Если запрос в данный момент выполняется, посмотрите вывод onstat -g act -r 1 и найдите элементы с rstcb , который не равен 0

Running threads:
 tid     tcb             rstcb            prty status                vp-class      name
 106     c0000000d4860950 0                2    running               107soc        soctcppoll
 107     c0000000d4881950 0                2    running               108soc        soctcppoll
 564457  c0000000d7f28250 c0000000d7afcf20 2    running                 1cpu        CDRD_10

В этом примере третья строка - это то, что в данный момент выполняется. Если у вас есть несколько строк с ненулевыми значениями rstcb, следите за тем, чтобы немного поискать ту, которая всегда или почти всегда есть. Скорее всего, это сеанс, который вы ищете.

c0000000d7afcf20 - это адрес, который нас интересует в этом примере.

Используйте onstat -u | grep c0000000d7afcf20 чтобы найти сеанс

c0000000d7afcf20 Y--P--- 22887    informix -        c0000000d5b0abd0 0    5     14060    3811

Это дает вам идентификатор сеанса, который в нашем примере равен 22887 . Используйте onstat -g ses 22887 перечислить информацию об этой сессии. В моем примере это системный сеанс, поэтому в выводе onstat -g ses ничего не видно.

1 голос
/ 25 сентября 2008

Хорошо, мне понадобилось немного времени, чтобы понять, как подключиться к sysmaster. Строка подключения JDBC:

JDBC: Informix-SQLI: //dbserver.local: 1526 / sysmaster: INFORMIXSERVER = MyDatabase

Где номер порта такой же, как при подключении к фактической базе данных. То есть, если ваша строка подключения:

JDBC: Informix-SQLI: // База данных: 1541 / CRM: INFORMIXSERVER = crmlive

Тогда строка подключения sysmaster:

JDBC: Informix-SQLI: // База данных: 1541 / sysmaster: INFORMIXSERVER = crmlive

Также найдена эта вики-страница , которая содержит ряд SQL-запросов для работы с таблицами sysmaster.

1 голос
/ 17 сентября 2008

Это потому, что предлагаемый ответ для DB2, а не для Informix.

База данных sysmaster (виртуальная реляционная база данных общей памяти Informix), вероятно, будет содержать информацию, которую вы ищете. Эти страницы могут помочь вам начать:

0 голосов
/ 09 сентября 2008
SELECT ELAPSED_TIME_MIN,SUBSTR(AUTHID,1,10) AS AUTH_ID, 
AGENT_ID, APPL_STATUS,SUBSTR(STMT_TEXT,1,20) AS SQL_TEXT
FROM SYSIBMADM.LONG_RUNNING_SQL
WHERE ELAPSED_TIME_MIN > 0
ORDER BY ELAPSED_TIME_MIN DESC

Кредит: SQL для просмотра длительных запросов

...