powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нагрузочный тест, 300 isql: count(*) from mon$statements всё время больше 1000. Why ?
1 сообщений из 1, страница 1 из 1
Нагрузочный тест, 300 isql: count(*) from mon$statements всё время больше 1000. Why ?
    #38405210
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Запустил окошки. Каждое из них лопатит большой скрипт, в котором вот такой код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
execute block as
begin
  . . .  DML-код, число строк выбирается из случайным образом, но из диапазона [ 20...200 ] . . .
end
commit;
-- пауза после коммита (типа имитация OLTP :))
shell take_some_sleep.bat;

- повторяется 30 раз (затем - переконнект и всё по-новой).

Паузы всем окнам назначены равными 3 сек, окна все стартовали одновременно (но дальше, ясен пень, паузы у них будут в разные моменты времени).

Дальше запускаю в отдельном окне isql и даю ему вот такой скрипт:
Код: sql
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.
-- file = `monstt1.sql`
set list off;
set blob all;
commit;
shell rm -f ./tmpmonstt1.tmp ./monstt1.log;
out tmpmonstt1.tmp;
select
   s.mon$attachment_id att
  ,s.stt_over_all_attachments
  ,count(iif(mon$state=1,1,null)) attach_stt_live
  ,count(iif(mon$state=0,1,null)) attach_stt_dead
  ,count(*) attach_stt_overall
  ,cast( replace(replace(left(list(iif(mon$state=1,mon$sql_text,'')), 200),ascii_char(10),' '), ascii_char(13),'') as varchar(200)) attach_SQL_live_sample
  ,cast( replace(replace(left(list(iif(mon$state=0,mon$sql_text,'')), 200),ascii_char(10),' '), ascii_char(13),'') as varchar(200)) attach_SQL_dead_sample
from (
  select s.*,count(*)over() stt_over_all_attachments from mon$statements s
) s
where mon$attachment_id<>current_connection
group by
   s.mon$attachment_id
  ,s.stt_over_all_attachments
;
out;
shell cat ./tmpmonstt1.tmp | sed -e "s/ \{1,\}$//" 1>./monstt1.log 2>&1;
shell rm -f ./tmpmonstt1.tmp;


Результаты этого скрипта слегка удивляют.
1) при числе коннектов от 260 до 300 (что вполне ОК) общее число стейтментов всё время около 1000. Откуда их столько ? Почему в mon$tatements так много не удалённых записей с mon$state=0 ?
2) поле "attach_SQL_live_sample" для некоторых записей содержит что-то странное: две или трим запятых подряд. В упор не вижу, как они могут вылезти из текста вышеприведенного запроса.

В аттаче - результаты нескольких запусков этого запроса.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нагрузочный тест, 300 isql: count(*) from mon$statements всё время больше 1000. Why ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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