Найдите долго выполняющийся запрос в Informix?

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

Выберите ответ, который помог вам больше всего - помог ли вообще какой-либо из них.

Jonathan Leffler 18.10.2008 09:13

Я не выбрал ответ, потому что, хотя два из них помогли, ни один из них не является полным.

grom 24.10.2008 06:29
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
2
2
8 547
4

Ответы 4

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 для просмотра длительных запросов

SYSIBMADM скорее предполагает, что это запрос DB2, а не Informix.

Jonathan Leffler 25.10.2008 03:45

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

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

Первая ссылка не работает. Вы знаете зеркало?

grom 23.06.2010 04:04

Если запрос в настоящее время выполняется, просмотрите вывод 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 ничего не видно.

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

jdbc:informix-sqli://dbserver.local:1526/sysmaster:INFORMIXSERVER=mydatabase

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

jdbc:informix-sqli://database:1541/crm:INFORMIXSERVER=crmlive

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

jdbc:informix-sqli://database:1541/sysmaster:INFORMIXSERVER=crmlive

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

Другие вопросы по теме