powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Informix [игнор отключен] [закрыт для гостей] / Просмотр транзакций
18 сообщений из 18, страница 1 из 1
Просмотр транзакций
    #36871280
Yorik56
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте

Как с помощью SQL запросов к SMI получить информацию

Еслть ли длинные транзакции
Заполнение транзакцией логических журналов (какая максимально заполнила)
Распределенные транзакции
Как отловить длинные транзакции и кто их порождает
Есть ли транзакции в состоянии ожидания ?

буду признателен за ответ
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36871312
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yorik56Здравствуйте
Как с помощью SQL запросов к SMI получить информацию
Еслть ли длинные транзакции
Заполнение транзакцией логических журналов (какая максимально заполнила)
Распределенные транзакции
Как отловить длинные транзакции и кто их порождает
Есть ли транзакции в состоянии ожидания ?
буду признателен за ответ

Посмотри - http://www.informix.kiev.ua/articles/sysmast/sysmast.htm
Figure 22. SQL script to display transactions and logs used

Думаю,
Василий Шульженко сможет помочь ... :)

С уважением,
Вадим.
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36872713
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yorik56Здравствуйте

Как с помощью SQL запросов к SMI получить информацию

Еслть ли длинные транзакции
Заполнение транзакцией логических журналов (какая максимально заполнила)
Распределенные транзакции
Как отловить длинные транзакции и кто их порождает
Есть ли транзакции в состоянии ожидания ?

буду признателен за ответ

Отправляю некоторые SQL-запросы. Возможно их потребуется подправить:

1)
--- onstat -u
---
SELECT
x0.sid, x0.username, hex(x1.flags) state
,dbinfo('utc_to_datetime',connected) start_time
,current hour to second - extend(dbinfo('utc_to_datetime',connected),hour to second) elapsed_time
, bitval(x1.flags,1) Y1 {User structure in use}
, bitval(x1.flags,2) S1 {Waiting for a latch}
, bitval(x1.flags,4) L1 {Waiting for a lock}
, bitval(x1.flags,8) B1 {Waiting for a buffer}
, bitval(x1.flags,16) C1 {Waiting for a checkpoint}
, bitval(x1.flags,32) R5 {In a read call}
, bitval(x1.flags,64) X5 {Writing logical-log file to backup tape}
, bitval(x1.flags,128) M7 {On-monitor Unix}
, bitval(x1.flags,256) {In a critical section}
, bitval(x1.flags,512) D7 {Special daemon}
, bitval(x1.flags,1024) A3 {Archiving IDS}
, bitval(x1.flags,2048) C7 {Clean up dead processes}
, bitval(x1.flags,4096) G1 {Waiting for write of log buffer}
, bitval(x1.flags,8192) B7 {Special buffer-flushing thread}
, bitval(x1.flags,16384) P3 {Remote database server}
, bitval(x1.flags,32768) {Deadlock timeout used to set RS_timeout}
, bitval(x1.flags,65536) {Regular lock timeout}
, bitval(x1.flags,262144) T1 {Waiting for a transaction}
, bitval(x1.flags,524288) P4 {Primary thread for a session}
, bitval(x1.flags,1048576) {Thread for building indexes}
, bitval(x1.flags,2097152) B7 {B-tree cleaner thread}
from "informix".sysscblst x0 ,"informix".sysrstcb x1, sysopendb o, sysuserthreads t --, syssesprof p
where (x0.sid = t.us_sid)
-- and (x0.sid = p.sid)
and (o.odb_sessionid=x0.sid and o.odb_sessionid !=dbinfo('sessionid') and
o.odb_dbname= (select odb_dbname from sysmaster:sysopendb
where odb_sessionid=dbinfo('sessionid') and odb_iscurrent='Y') )
and ((x0.address = x1.scb ) and ("informix".bitval(x1.flags ,'0x80000' )= 1 ) )
order by 1,2;

2)
---
--- Monitoring use logs of users sessions with (SMI).
---
DATABASE sysmaster;
select number, uniqid, (used/size*100) from syslogs
where uniqid >= (select min(tx_loguniq)
from systrans where tx_loguniq > 0)
union
select number, uniqid, 0.00 from syslogs
where uniqid < (select min(tx_loguniq) from
systrans where tx_loguniq > 0);

3)
---
-- Displays how many open transactions are in each log.
--

database sysmaster;
-- Select the logical logs numbers for each transaction
select tx_logbeg,
tx_loguniq
from systrans
into temp b;

-- Count the number of transactions begining in each log
select tx_logbeg, count(*) cnt
from B
where tx_logbeg > 0
group by tx_logbeg
into temp C;

-- Count the number of transactions currently in each log
select tx_loguniq, count(*) cnt
from B
where tx_loguniq > 0
group by tx_loguniq
into temp D;

select
number,
uniqid,
size,
used,
-- is_used,
-- is_current,
-- is_backed_up,
-- is_archived
c.cnt tx_beg_cnt,
d.cnt tx_curr_cnt
from syslogs, outer c, outer D
where uniqid = c.tx_logbeg
and uniqid = d.tx_loguniq;

4)
--
-- Monitoring amount of logical log space used by a session;
-- (onstat -g tpf sess-id) thread profile;
--
-- sid - Session id;
-- longtxs - Long transaction;
-- logspused - Log space used by current transaction (bytes);
-- maxlogsp - Maximum log space used by a transaction in this session (in bytes);
--
SELECT sid, longtxs, logspused, maxlogsp FROM sysmaster:syssesprof
WHERE longtxs <> 0; -- нужно уточнить условие ?!


Скрипт от Василия ... :)

5)
-------------------------------------------------
-- User Sessions activity profile
-- All users and all info
-- (sysmaster:syssesprof,syssessions)
--
-- Shulzhenko V. DBA_Tools
-------------------------------------------------
set isolation to dirty read;
select username
,tty
,hostname
,count(p.sid) sessions
,'----- info from syssesprof -----' _____
,'-- locks --' _____
,sum(lockreqs) lockreqs
, sum(locksheld) locksheld
, sum(lockwts) lockwts
,sum(deadlks) deadlks
, sum(lktouts) lktouts
,'-- isam --' _____
,sum(isreads) isreads
, sum(iswrites) iswrites
,sum(isrewrites) isrewrites
, sum(isdeletes) isdeletes
,'-- buff_io --' _____
,sum(bufreads) bufreads
, sum(bufwrites) bufwrites
,'-- page_io --' _____
,sum(pagreads) pagreads
, sum(pagwrites) pagwrites
,'-- sort_scan --' _____
,sum(seqscans) seqscans
, sum(total_sorts) total_sorts
,sum(dsksorts) dsksorts
, sum(max_sortdiskspace) max_sortdiskspace
,'-- logs --' _____
,sum(logspused) logspused
,sum(maxlogsp) maxlogsp
, sum(logrecs) logrecs
,'-- transact --' _____
,sum(iscommits) iscommits
,sum(isrollbacks) isrollbacks
, sum(longtxs) longtxs
from syssesprof p,syssessions s
WHERE p.sid = s.sid
-- and username=
--
-- 'name_user'
--
group by 1,2,3
order by 1;
-------------------

Еще один ...

7)
-------------------------------------------------
-- Session current SQL (syssqlcurses)
-- (last Current (active) main SQL-query by SID)
--
-- Shulzhenko V. DBA_Tools
-------------------------------------------------
set isolation to dirty read;
select '__________________' ________________
,scs_sessionid SID
,scs_currdb DataBase
,scs_isolationlevel ISOLATION_LEVEL
,'__________________' ________________
,scs_sqlstatement SQL_STATEMENT
from syssqlcurses
where scs_sessionid=
--
--Укажи SID (session id)
--

8)
-- Displays users and position in logical logs.
-- This script is based on an undocumented sysmaster table systrans
-- and may not work in all versions. It was tested with 7.23.
-- Some fields are commented out so the display will fit on 80 columns

database sysmaster;

select t.username,
t.sid,
tx_id,
-- tx_addr,
-- tx_flags,
-- tx_mutex,
tx_logbeg,
tx_loguniq,
tx_logpos
-- tx_lklist,
-- tx_lkmutex,
-- tx_owner,
-- tx_wtlist,
-- tx_ptlist,
-- tx_nlocks,
-- tx_lktout,
-- tx_isolevel,
-- tx_longtx,
-- tx_coordinator,
-- tx_nremotes
from systrans x, sysrstcb t
where tx_owner = t.address
--and tx_logbeg > 0;
order by tx_logbeg desc

9)
-- Displays users and position in logical logs.
-- This script is based on an undocumented sysmaster table systrans
-- Some fields are commented out so the display will fit on 80 columns

database sysmaster;
select t.username,
t.sid,
tx_id,
-- tx_addr,
-- tx_flags,
-- tx_mutex,
tx_logbeg,
tx_loguniq,
tx_logpos
-- tx_lklist,
-- tx_lkmutex,
-- tx_owner,
-- tx_wtlist,
-- tx_ptlist,
-- tx_nlocks,
-- tx_lktout,
-- tx_isolevel,
-- tx_longtx,
-- tx_coordinator,
-- tx_nremotes
from systrans x, sysrstcb t
where tx_owner = t.address
--and tx_logbeg > 0;
order by tx_logbeg desc;

10)
-------------------------------------------------
-- Session's activity profile (syssesprof)
-- All info about ALL sessions
--
-- Shulzhenko V. DBA_Tools
-------------------------------------------------
set isolation to dirty read;
select
'----- info from syssesprof -----' __activity__
,sid,
'-- locks --' __________
,lockreqs,locksheld,lockwts
,deadlks,lktouts
,'-- rw --' __________
,isreads,iswrites
,isrewrites,isdeletes
,'-- buff_io --' __________
,bufreads, bufwrites
,'-- page_io --' __________
,pagreads,pagwrites
,'-- sort_scan --' __________
,seqscans, total_sorts
,dsksorts,max_sortdiskspace
,'-- logs --' __________
,logspused,maxlogsp,logrecs
,'-- transact --' __________
,iscommits,isrollbacks,longtxs
from syssesprof
-- where sid=
--
-- sid
--

Думаю, для начала хватит.
Можно еще выполнить анализ логов (с помощью onlog) для пользовательской сессии, которая порождает длинные транзакции и т.д.

С уважением,
Вадим.
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36873169
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorik56
Как с помощью SQL запросов к SMI получить информацию:
Есль ли длинные транзакции ?
Заполнение транзакцией логических журналов (какая максимально заполнила ?)

Наверное, больше интересуют пользователи и сессии, которые порождают длинные транзакции ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
------------------------------------------------
-- Amount of logical log space used by a sessions
--
-- V.Shulzhenko  DBA_Tools
------------------------------------------------
set isolation to dirty read;
SELECT   username[ 1 , 8 ]
        ,p.sid
        ,longtxs      
        ,logspused
        ,maxlogsp
--      ,logrecs
from syssesprof p,syssessions s
WHERE p.sid = s.sid
  and (logspused >  0  or maxlogsp >  0 )
order by logspused desc,maxlogsp desc;

------------------------------------------------
-- Amount of logical log space used by a sessions
-- First 20 by log space used
-- V.Shulzhenko DBA_Tools
------------------------------------------------
set isolation to dirty read;
SELECT  first  20  
        username[ 1 , 8 ]
        ,p.sid
--      ,longtxs
        ,logspused
        ,maxlogsp
        ,logrecs
from syssesprof p,syssessions s
WHERE p.sid = s.sid
  and logspused+maxlogsp+logrecs>  0 
order by logspused desc,maxlogsp desc;
правда, приведенные запросы 7-летней давности и на новых версиях IDS не проверялись (но версия ТС указана и не была :)
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36873181
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorik56
Как с помощью SQL запросов к SMI получить информацию:
Есть ли транзакции в состоянии ожидания ?

Слишком широкий вопрос, т.к. видов ожидания слишком много и непонятно , что именно вы хотите найти :) Опять же, что вам даст сама транзакция ? Может нужны сессия и юзер ?
Надеюсь, поможет определиться нижеследующий запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
-----------------------------------------------------------
-- Is a sessions being in a waiting state now ?
--
--      IDS 7.3+  9.2+
--
-- V.Shulzhenko  DBA Tools
-----------------------------------------------------------
set isolation to dirty read;
SELECT  sid
        ,username[ 1 , 8 ]  username
        ,hostname
        ,tty
        ,current hour to second - 
          extend(dbinfo('utc_to_datetime',connected),hour to second)  work_time 
        ,is_wlatch      -- wait on latch
        ,is_wlock       -- wait on lock
        ,is_wbuff       -- wait on buffer
        ,is_wckpt       -- wait on checkpoint
        ,is_wlogbuf     -- wait on log buffer
        ,is_wtrans      -- wait on a transaction
        ,is_monitor     -- a monitoring process
        ,is_incrit      -- in crtical section of transaction (e.g writting to disk)
FROM    syssessions
WHERE   is_wlatch= 1      -- Flag 1=Yes, 0=No, wait on latch
        or is_wlock= 1    -- Flag 1=Yes, 0=No, wait on lock
        or is_wbuff= 1    -- Flag 1=Yes, 0=No, wait on buffer
        or is_wckpt= 1    -- Flag 1=Yes, 0=No, wait on checkpoint
        or is_wlogbuf= 1  -- Flag 1=Yes, 0=No, wait on log buffer
        or is_wtrans= 1   -- Flag 1=Yes, 0=No, wait on a transaction
        or is_incrit= 1   -- Flag 1=Yes, 0=No, in crtical section of transaction (e.g writting to disk)
        and sid != dbinfo('sessionid')           -- Exclude this session
ORDER BY  1 
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36873598
Yorik56
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Именно необходимо занть

1) Пользователи которые порождают транзакции
2) Насколько каждая конкретная транзакция использует logspace
3) Таких транзакций немного но они очень дорогие

Спасибо
Постараюсь протестировать скрипты на 11.50
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36873892
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorik56Именно необходимо занть

1) Пользователи которые порождают транзакции
2) Насколько каждая конкретная транзакция использует logspace
3) Таких транзакций немного но они очень дорогие
цель-то у вас какая? В чем проблема? Хотите найти такие транзакции и разобраться с ними? Нет возможности/желания увеличивать журнал?
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36874425
Yorik56
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да хотелось бы и того и другого
изменить размер файла журнала чтоб не быстро переключались

да и найти тот запрос чтобы провести его
оптимизацию (не мной конечно)
чтоб хоть как то уменьшить это время
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36874947
zaiets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yorik56Именно необходимо занть
3) Таких транзакций немного но они очень дорогие


А в чем исчисляется дороговизна?
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36875158
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zaietsYorik56Именно необходимо занть
3) Таких транзакций немного но они очень дорогие


А в чем исчисляется дороговизна?

Насколько Я понимаю - в используемых ресурсах ... :)
Длинная транзакция - это не мед для ресурсов системы, требуемого SLA ... и финансовой стоимости $$$

С уважением,
Вадим.
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36875362
Yorik56
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доровизна во времени простоя
сервера пока транзакция идёт

и времени подготовки данных для более
длинных транзакций :)
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36875439
zaiets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GVF112GVF
Насколько Я понимаю - в используемых ресурсах ... :)
Длинная транзакция - это не мед для ресурсов системы, требуемого SLA ... и финансовой стоимости $$$

С уважением,
Вадим.


Понятие ресурса тоже относительное, четко определенных величин не так уж и много. :)

По поводу длинных транзакций и финансовой стоимости - не все решения данной проблемы пропорцианальны финансовым вливаниям в железо. Хотя да, можно же и в людей вливать, там возможно что ближе к пропорциональности.

В свое время делал чет подобное - ну выявлял я места где транзакции длинные (давно(в моем понимании) начались по метрике логов), а дальше дело не шло.

Все конечно зависит от системы.
Но метод топора наибоее действенен - урезаете параметры ЛТХ до приемлемых значений(у меня из расчета около 5 мин подъема), приложения начинают падать, грите что я не могу увеличить, так как это будет пропорцианально простою в случае аварийной ситуации
Потом ставите трассировку на приложение и смотрите в каих местах ошибка.
и подобные места в оперативном порядке правятся. Все довольно просто.

Конечно подходит не для всех систем. Но это стоит меньших усилий по доказательству наличия проблемы чем искать на сервере проблемные транзакции, выявлять что это за приложение, что в данный момент делает пользователь а потом доказывать разработчику актуальность данной проблемы.
ЛТХ на 11.50 меняются динамически.
Пользователи народ непредсказуемый - там где разработчик думает что пользователь работает в транзакции, пользователь в транзакции может вполне нормально пить себе чай.
Со временем такие места вылизываются и это нормальный процесс.


Раз уж затронуд тему, может есть здесь представители IBM?
Было бы очень хорошо, если бы было можно для отдельных пользователей или сессий указывать свои ЛТХ параметры отличные от конфигурационных. Иногда это действительно нужно.
А может уже есть а я не дочитал как обычно?
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36875460
zaiets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yorik56доровизна во времени простоя
сервера пока транзакция идёт
и времени подготовки данных для более
длинных транзакций :)

А в чем у вас собственно проблема?
У вас проблема в быстродействии последовательных операций?

По вашим признакам дороговизны у меня складывается впечатление что проблема
в быстродействии сервера а не непосредственно в длинных транзакциях.

Если судить о дороговизне как "времени простоя сервера пока транзакция идёт"
то снова же - что такое в данном случае у вас время простоя, сервер то работает - обслуживает отранзакцию?

Сервер не стоит - он работает.
А если есть проблема длины транзакции - поставьте вайт чтобы успевали промониторить
и оттолкнитесь от блокировок.
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36875717
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zaietsYorik56доровизна во времени простоя
сервера пока транзакция идёт
и времени подготовки данных для более
длинных транзакций :)

А в чем у вас собственно проблема?
У вас проблема в быстродействии последовательных операций?

По вашим признакам дороговизны у меня складывается впечатление что проблема
в быстродействии сервера а не непосредственно в длинных транзакциях.

Если судить о дороговизне как "времени простоя сервера пока транзакция идёт"
то снова же - что такое в данном случае у вас время простоя, сервер то работает - обслуживает отранзакцию?

Сервер не стоит - он работает.
А если есть проблема длины транзакции - поставьте вайт чтобы успевали промониторить
и оттолкнитесь от блокировок.

Думаю,
что проблема не в сервере. Есть подозрение, что разработчики что-то
криво написали. Правда есть конечно моменты ... например, с распределенными транзакциями.
Это трудно предвидеть и т.д.

Как правило - 80% - это проблемы SQL ... :)

С уважением,
Вадим.
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36876362
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorik56,

а какой у вас объем логов?
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36876814
Yorik56
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1000 Logs по 40 МБ
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36877087
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorik561000 Logs по 40 МБ
а параметры LTXHWM и LTXEHWM ?
...
Рейтинг: 0 / 0
Просмотр транзакций
    #36885843
Yorik56
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
50/60

тонкость в том что изначально система определена и работает как OLTP
но в конце отчетного периода появляются 2 3 транзакции которые блокируют систему
те другие пользователи немогут продолжить работу пока транзакция не завершится
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Просмотр транзакций
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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