Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / out nul; select * from <много-строк>; -- откуда очередь на запись в ProcessExplorer'e / 6 сообщений из 6, страница 1 из 1
16.02.2015, 16:53
    #38880917
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
out nul; select * from <много-строк>; -- откуда очередь на запись в ProcessExplorer'e
hi all

В окне-1 запустил isql и ввожу:

Код: plaintext
1.
2.
C:\MIX\firebird\fb30>isql localhost/3333:e30
Database:  localhost/3333:e30
SQL> out nul; select * from rdb$types,rdb$types,rdb$types;

В окне-2 открыт РЕ и в нём созерцаю этот isql.

Странность-1: РЕ начинает показывать очередь на запись при том, что весь вывод направляется в NUL.
Странность-2: РЕ не показывает вообще никакой активности чтения (см аттач).

Это отчего так ? В куда он пишет, при этом ничего не читая ? 8-))

PS. Кроме того, если срубить этот ISQL и запустить его заново, то получим сообщение о падении ФБ и предложение "Отправить отчёт". Подсказка "SQL>" хотоя и появится при этом, в самом шыйд-окне работать невозможно: висит наглухо, не срубается ни по Упр-Це ни по Упр-Брейку.

В списке "Управление / События / Приложения" для эта печалька отразилась так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Ошибка приложения firebird.exe, версия 3.0.0.31647, модуль engine12.dll, версия 3.0.0.31647, адрес 0x002cd523.

0000: 41 70 70 6c 69 63 61 74   Applicat
0008: 69 6f 6e 20 46 61 69 6c   ion Fail
0010: 75 72 65 20 20 66 69 72   ure  fir
0018: 65 62 69 72 64 2e 65 78   ebird.ex
0020: 65 20 33 2e 30 2e 30 2e   e 3.0.0.
0028: 33 31 36 34 37 20 69 6e   31647 in
0030: 20 65 6e 67 69 6e 65 31    engine1
0038: 32 2e 64 6c 6c 20 33 2e   2.dll 3.
0040: 30 2e 30 2e 33 31 36 34   0.0.3164
0048: 37 20 61 74 20 6f 66 66   7 at off
0050: 73 65 74 20 30 30 32 63   set 002c
0058: 64 35 32 33               d523    

В логе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CSPROG	Mon Feb 16 16:41:05 2015
	REMOTE INTERFACE/gds__detach: Unsuccesful detach from database.
	Uncommitted work may have been lost.
	Error writing data to the connection.


CSPROG	Mon Feb 16 16:41:05 2015
	INET/inet_error: send errno = 10054


CSPROG	Mon Feb 16 16:41:16 2015
	Shutting down the server with 3 active connection(s) to 2 database(s), 0 active service(s)
...
Рейтинг: 0 / 0
16.02.2015, 17:32
    #38880987
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
out nul; select * from <много-строк>; -- откуда очередь на запись в ProcessExplorer'e
Вообще, с перенаправлением в NUL в винде как-то всё кисло выглядит.
Вот сопоставление для пустой базы, Win XP, SuperServer, buffers = 2048:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Database:  localhost/3333:e30
SQL> set stat on;  out aaa ; select 1 from rdb$types,rdb$types,(select 1 k from rdb$types rows 10); out;
Current memory = 18392376
Delta memory = 203952
Max memory = 18410144
Elapsed time=  20.7 00 sec
Fetches = 1313275
SQL> set stat on;  out nul ; select 1 from rdb$types,rdb$types,(select 1 k from rdb$types rows 10); out;
Elapsed time=  24.4 63 sec
Fetches = 1313270

SQL> set stat on;  out aaa ; select 1 from rdb$types,rdb$types,(select 1 k from rdb$types rows 20); out;
Current memory = 18392376
Elapsed time=  39.6 71 sec
Fetches = 2626540
SQL> set stat on;  out nul ; select 1 from rdb$types,rdb$types,(select 1 k from rdb$types rows 20); out;
Elapsed time=  48.6 32 sec
Fetches = 2626540

А вот такое же для линухка (там сервак, но дело не в абсол. цифрах, а в их отношении):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
$ /opt/fb30/bin/isql localhost/3330:/var/db/fb30/tmp.fdb                                         Database:  localhost/3330:/var/db/fb30/tmp.fdb
SQL> set stat on;  out ./aaa.tmp ; select 1 from rdb$types,rdb$types,(select 1 k from rdb$types rows 10); out;
Elapsed time=  3.87 9 sec
Cpu = 2.460 sec
Fetches = 1313275

SQL> set stat on;  out /dev/null ; select 1 from rdb$types,rdb$types,(select 1 k from rdb$types rows 10); out;
Elapsed time=  2.05 3 sec
Cpu = 1.890 sec
Fetches = 1313270

SQL> set stat on;  out ./aaa.tmp ; select 1 from rdb$types,rdb$types,(select 1 k from rdb$types rows 20); out;
Elapsed time=  7.8 02 sec
Cpu = 4.930 sec
Fetches = 2626540

SQL> set stat on;  out /dev/null ; select 1 from rdb$types,rdb$types,(select 1 k from rdb$types rows 20); out;
Elapsed time=  4.09 0 sec
Cpu = 3.740 sec
Fetches = 2626540

На линухе переназначение в /dev/null ожидаемо приводит к выигрышу, на винде - всё наоборот :(
...
Рейтинг: 0 / 0
16.02.2015, 17:37
    #38880994
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
out nul; select * from <много-строк>; -- откуда очередь на запись в ProcessExplorer'e
Таблоид,

Тебе птица мало, теперь ты решил еще консоль у окошек отломать?-))
...
Рейтинг: 0 / 0
16.02.2015, 17:45
    #38881003
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
out nul; select * from <много-строк>; -- откуда очередь на запись в ProcessExplorer'e
не, тут интерес вспых: можно ли уменьшить нагрузку на машину, на которой работает много ISQL-молотилок ? например, стартовали 100 молотилок, они пишут каждая в свой текстовик, но пишут не очень много - так, по 10 строк в минуту, к примеру. Протокольные сообщения типа "начал делать тот-то... обломался с тем-то... или успешно завершил" и проч.

Но этих окон - 100 или больше. И они таки должны будут грузить в "общей своей сумме" машину. И если на этой же машине установлен ФБ, который и проверяется сейчас, то сиё не есть гут.
...
Рейтинг: 0 / 0
16.02.2015, 17:53
    #38881017
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
out nul; select * from <много-строк>; -- откуда очередь на запись в ProcessExplorer'e
Таблоид,

Вот бы мне кто еще напомнил: если процесс делает запись в NUL, то занимается ли системой хэндл или начинает работать какая-то магия, бо это "ненастоящий" файл? По ходу эксперимента похоже, что таки занимается.
...
Рейтинг: 0 / 0
16.02.2015, 18:29
    #38881057
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
out nul; select * from <много-строк>; -- откуда очередь на запись в ProcessExplorer'e
DarkMasterесли процесс делает запись в NUL, то занимается ли системой хэндл или начинает работать какая-то магия, бо это "ненастоящий" файл? По ходу эксперимента похоже, что таки занимается.нет, ничего он не занимает. Команду
Код: plaintext
set stat on; out nul; select 1 from rdb$types,rdb$types,(select 1 k from rdb$types rows 10); out;
-- можно вводить одновременно с двух окон.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / out nul; select * from <много-строк>; -- откуда очередь на запись в ProcessExplorer'e / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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