Dmitri Kuzmenko wrote:
не знаю, каким именно Вы образом и какую статистику записываете
при помощи таблиц мониторинга. Приведите пример, пожалуйста,
если это не секретная технология.
Ничего секретного :)
Процедура вида
create procedure SAVE_STAT (
STAT_COMMENT varchar(255))
as
declare variable "Statement ID" integer;
declare variable "Attachment ID" integer;
declare variable "Transaction ID" integer;
declare variable "State" char(6);
...
BEGIN
transaction_id = CURRENT_TRANSACTION;
IN AUTONOMOUS TRANSACTION DO
BEGIN
FOR
SELECT st.mon$statement_id as "Statement ID",
st.mon$attachment_id as "Attachment ID",
st.mon$transaction_id "Transaction ID",
case
when st.mon$state = 0 then 'IDLE'
when st.mon$state = 1 then 'ACTIVE'
...
FROM mon$statements st
left join mon$record_stats r on (st.mon$stat_id = r.mon$stat_id)
left join mon$io_stats io on (st.mon$stat_id = io.mon$stat_id)
where st.mon$transaction_id = :transaction_id
order by st.mon$timestamp
INTO :"Statement ID",
:"Attachment ID",
:"Transaction ID",
:"State",
...
DO
BEGIN
insert into saved_stat (stat_comment, "Statement ID", "Attachment
ID", "Transaction ID", "State", ...)
values (:stat_comment, :"Statement ID", :"Attachment ID",
:"Transaction ID", :"State", ...);
END
END
END
Полный текст процедуры делается Экспертом методом наложения заклинания
хранимки по табличке (смайл)
Далее для примера:
execute block
as
declare variable cnt int;
begin
delete from saved_stat;
execute procedure save_stat('1');
select count(*) from RDB$TYPES into :cnt;
execute procedure save_stat('2');
select count(*) from RDB$TYPES where RDB$TYPE_NAME starting 'T' into
:cnt;
execute procedure save_stat('3');
end
Смотрим результат:
select S.ID, S.stat_comment,
s."Non-indexed Reads", s."Indexed Reads",
s."Records Inserted", s."Records Updated", s."Records Deleted"
from saved_stat s order by S.ID
Выводы:
Между 1 и 2 - 227 неиндексых чтения
Между 2 и 3 - 12 индексных чтений
А вот что удивило (вопрос к Владу скорее всего)
1 -> 2 - 1 запись вставлена
2 -> 3 - 1 запись вставлена
Странно, по идее все вставки в автономке...
Из мониторинга можно ещё вытянуть имя процедуры и номер строки откуда
процедур сбора статистики вызвана.