Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Informix Новый топик    Ответить
 Просмотр транзакций  [new]
Yorik56
Guest
Здравствуйте

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

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

буду признателен за ответ
29 сен 10, 00:03    [9519301]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
GVF112GVF
Guest
Yorik56
Здравствуйте
Как с помощью SQL запросов к SMI получить информацию
Еслть ли длинные транзакции
Заполнение транзакцией логических журналов (какая максимально заполнила)
Распределенные транзакции
Как отловить длинные транзакции и кто их порождает
Есть ли транзакции в состоянии ожидания ?
буду признателен за ответ


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

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

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

Сообщение было отредактировано: 29 сен 10, 12:52
29 сен 10, 00:39    [9519371]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
GVF112GVF
Guest
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) для пользовательской сессии, которая порождает длинные транзакции и т.д.

С уважением,
Вадим.
29 сен 10, 16:35    [9524438]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
vasilis
Member

Откуда: Украина, Киев
Сообщений: 2205
Yorik56

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

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

------------------------------------------------
-- 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 не проверялись (но версия ТС указана и не была :)
29 сен 10, 20:38    [9526008]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
vasilis
Member

Откуда: Украина, Киев
Сообщений: 2205
Yorik56

Как с помощью SQL запросов к SMI получить информацию:
Есть ли транзакции в состоянии ожидания ?

Слишком широкий вопрос, т.к. видов ожидания слишком много и непонятно , что именно вы хотите найти :) Опять же, что вам даст сама транзакция ? Может нужны сессия и юзер ?
Надеюсь, поможет определиться нижеследующий запрос:
-----------------------------------------------------------
-- 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
29 сен 10, 20:47    [9526031]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
Yorik56
Guest
Именно необходимо занть

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

Спасибо
Постараюсь протестировать скрипты на 11.50
30 сен 10, 09:24    [9527119]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
Yorik56
Именно необходимо занть

1) Пользователи которые порождают транзакции
2) Насколько каждая конкретная транзакция использует logspace
3) Таких транзакций немного но они очень дорогие
цель-то у вас какая? В чем проблема? Хотите найти такие транзакции и разобраться с ними? Нет возможности/желания увеличивать журнал?
30 сен 10, 11:14    [9528077]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
Yorik56
Guest
да хотелось бы и того и другого
изменить размер файла журнала чтоб не быстро переключались

да и найти тот запрос чтобы провести его
оптимизацию (не мной конечно)
чтоб хоть как то уменьшить это время
30 сен 10, 13:49    [9529809]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
zaiets
Guest
Yorik56
Именно необходимо занть
3) Таких транзакций немного но они очень дорогие


А в чем исчисляется дороговизна?
30 сен 10, 16:01    [9531368]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
GVF112GVF
Guest
zaiets
Yorik56
Именно необходимо занть
3) Таких транзакций немного но они очень дорогие


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


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

С уважением,
Вадим.
30 сен 10, 17:01    [9532059]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
Yorik56
Guest
доровизна во времени простоя
сервера пока транзакция идёт

и времени подготовки данных для более
длинных транзакций :)
30 сен 10, 18:03    [9532766]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
zaiets
Guest
GVF112GVF

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

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



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

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

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

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

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


Раз уж затронуд тему, может есть здесь представители IBM?
Было бы очень хорошо, если бы было можно для отдельных пользователей или сессий указывать свои ЛТХ параметры отличные от конфигурационных. Иногда это действительно нужно.
А может уже есть а я не дочитал как обычно?
30 сен 10, 18:28    [9532924]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
zaiets
Guest
Yorik56
доровизна во времени простоя
сервера пока транзакция идёт
и времени подготовки данных для более
длинных транзакций :)


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

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

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

Сервер не стоит - он работает.
А если есть проблема длины транзакции - поставьте вайт чтобы успевали промониторить
и оттолкнитесь от блокировок.
30 сен 10, 18:41    [9532980]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
GVF112GVF
Guest
zaiets
Yorik56
доровизна во времени простоя
сервера пока транзакция идёт
и времени подготовки данных для более
длинных транзакций :)


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

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

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

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


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

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

С уважением,
Вадим.
30 сен 10, 22:14    [9533695]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
Тан
Member

Откуда: Череповец
Сообщений: 349
Yorik56,

а какой у вас объем логов?
1 окт 10, 11:08    [9535303]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
Yorik56
Guest
1000 Logs по 40 МБ
1 окт 10, 13:15    [9536911]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
Тан
Member

Откуда: Череповец
Сообщений: 349
Yorik56
1000 Logs по 40 МБ

а параметры LTXHWM и LTXEHWM ?
1 окт 10, 14:26    [9537865]     Ответить | Цитировать Сообщить модератору
 Re: Просмотр транзакций  [new]
Yorik56
Guest
50/60

тонкость в том что изначально система определена и работает как OLTP
но в конце отчетного периода появляются 2 3 транзакции которые блокируют систему
те другие пользователи немогут продолжить работу пока транзакция не завершится
6 окт 10, 23:03    [9565428]     Ответить | Цитировать Сообщить модератору
Все форумы / Informix Ответить