Прерывание по Ctrl-Break сортировки в isql : в temp-каталоге остаются fb_sort_* файлы

Таблоид
Дата: 21.06.2012 02:10:15
hi all

При выполнении невинной вставки 1 ляма ID'шников в случайном порядке:
insert into t_main(id)
with recursive
r as(select 0 i from rdb$database union all select i+1 from r where r.i<999)
select n1.i*1000+n0.i
from r n1,r n0
order by rand();
- Firebird'у понадобилось вытолкнуть часть данных на диск.
Не дождавшись завершения сортировки, я прервал isql через Ctrl-Break, увеличил tempCacheLimit до 256 Мб и рестартанул ФБ.
И вижу теперь в temp-папке неубранный fb_sort-файл от предыдущего запуска с нехилым размером 114 Мб.

К наличию тучных куч fb_query_xxxx я уже давно привык, но они маленькие, сильно не напрягает.
Но времянки в сотни мегов, по-тихому оставляемые в c:\temp, пока их не найдут, - перебор, КМК.

Да, и еще вопросик.
А почему это при buffers= 16384 и tempcachelimit = 256 Mb ему для сортировки 1 ляма строк по 4 байта длиной (единственное int-поле) всё равно нужно выталкивать что-то на диск ?
dimitr
Дата: 21.06.2012 07:58:22
про брошенные файлы во времянке - не верю (с) Особенно после перезапуска сервера. Точно воспроизводится?
а сортируется отнюдь не 4 байта, а больше. Помимо NULL-флагов (по байту на поле плюс выравнивание) через сортировщик также протаскиваются recno (8 байт) и txnid (4 байта) на каждую задействованную в сортировке таблицу.
Таблоид
Дата: 21.06.2012 09:41:10
> про брошенные файлы во времянке - не верю (с) Особенно после перезапуска сервера. Точно воспроизводится?

окно #1
Стартую батник следующего содержания:
set f=dirtmp.log
if exist %f% del %f%
set k=0
:m1
@set /a k=k+1
echo iter #%k% %time% >> %f%
if exist c:\temp\fb_sort* dir c:\temp\fb_sort* | findstr /i /c:fb_sort >> %f%
echo iter #%k% pause before next iteration. . .
ping 127.0.0.1 > nul
goto m1

окно #2
C:\1INSTALL\FIREBIRD\Data>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 'tt.fdb'; commit;
SQL> show version;
ISQL Version: WI-V2.5.2.26390 Firebird 2.5
Server version:
Firebird/x86/Windows NT (access method), version "WI-V2.5.1.26351 Firebird 2.5"
Firebird/x86/Windows NT (remote server), version "WI-V2.5.1.26351 Firebird 2.5/XNet (BALAHA)/P12"
Firebird/x86/Windows NT (remote interface), version "WI-V2.5.2.26390 Firebird 2.5/XNet (BALAHA)/P12"
on disk structure version 11.2
SQL> in filrand;
recreate table t_main(id int primary key);
commit;
-------------------------------
insert into t_main(id)
with recursive
r as(select 0 i from rdb$database union all select i+1 from r where r.i<999)
select n1.i*1000+n0.i
from r n1,r n0
order by rand();
-- дальше жду секунд 15-20, после чего:
^C

Лог батника:
+
iter #1  9:29:09.79 
iter #2 9:29:12.81
iter #3 9:29:15.81
21.06.2012 09:29 7 340 032 fb_sort_m5lfoz
iter #4 9:29:18.96
21.06.2012 09:29 14 680 064 fb_sort_m5lfoz
iter #5 9:29:22.25
21.06.2012 09:29 36 700 160 fb_sort_m5lfoz
iter #6 9:29:25.26
21.06.2012 09:29 51 380 224 fb_sort_m5lfoz
iter #7 9:29:28.75
21.06.2012 09:29 51 380 224 fb_sort_m5lfoz
iter #8 9:29:31.82
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #9 9:29:34.84
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #10 9:29:38.01
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #11 9:29:41.29
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #12 9:29:44.31
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #13 9:29:47.32
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #14 9:29:50.34
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #15 9:29:53.35
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #16 9:29:56.37
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #17 9:29:59.51
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #18 9:30:02.75
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #19 9:30:05.92
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #20 9:30:08.95
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #21 9:30:12.04
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #22 9:30:15.07
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #23 9:30:18.25
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #24 9:30:21.28
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #25 9:30:24.29
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #26 9:30:27.35
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #27 9:30:30.37
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #28 9:30:33.45
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #29 9:30:36.65
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #30 9:30:39.67
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #31 9:30:42.68
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #32 9:30:45.78
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #33 9:30:48.82
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #34 9:30:51.84
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #35 9:30:54.85
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #36 9:30:57.87
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #37 9:31:00.93
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #38 9:31:04.01
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #39 9:31:07.26
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #40 9:31:10.34
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #41 9:31:13.40
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #42 9:31:16.48
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #43 9:31:19.54
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #44 9:31:22.56
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #45 9:31:25.59
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #46 9:31:28.82
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #47 9:31:32.10
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #48 9:31:35.12
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #49 9:31:38.14
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #50 9:31:41.15
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #51 9:31:44.17
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #52 9:31:47.18
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #53 9:31:50.20
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #54 9:31:53.46
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #55 9:31:56.71
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #56 9:31:59.73
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #57 9:32:02.82
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #58 9:32:06.09
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #59 9:32:09.28
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #60 9:32:12.32
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #61 9:32:15.34
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #62 9:32:18.35
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #63 9:32:21.70
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #64 9:32:24.73
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #65 9:32:27.75
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #66 9:32:30.84
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #67 9:32:33.92
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #68 9:32:37.04
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #69 9:32:40.46
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #70 9:32:43.48
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #71 9:32:46.54
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
iter #72 9:32:49.65
21.06.2012 09:29 117 440 512 fb_sort_m5lfoz
Таким обр., сортировка выбросилась на диск практически *сразу*. При том, что на машине свободно около 512 мегов памяти из 1 Гб полного объёма RAM.

Процесс fb_inet_server, выполняющий эту задачу, легко определился в PE, я его конечно же НЕ срубаю, жду когда он доработает.
Но и через 5, и через 10 минут вижу, что он ничего не делает (see attach screen). А файл fb_sort - остался.

Затем рестартую службу ФБ. При этом тот процесс, ес-сно, исчезает. А файл fb_sort - всё равно остался.

PS.
Служба запускается так:
C:\1INSTALL\FIREBIRD\FB25RLS\bin\fb_inet_server.exe -s DefaultInstance

Тот процесс, который занимался сортировкой, был таким:
C:\1INSTALL\FIREBIRD\FB25RLS\bin\fb_inet_server.exe -x -h 1284
Таблоид
Дата: 21.06.2012 09:44:19
Таблоид
Затем рестартую службу ФБ. При этом тот процесс, ес-сно, исчезает. А файл fb_sort - всё равно остался.
ooops... наврал я, пардонте: файл-таки удалился. Но с каким-то уж ОЧЕНЬ странным запозданием, чуть ли не в 1-2 минуты, после перезапуска службы ФБ.
Но почему он не грохается сразу после разрыва коннекта ?
ФБ молотит там чего-то, игнорируя не только мой "Упр-Брк" (ладно, это уже привычно), но и не удаляет свой же мусор в темп-каталоге! :(
hvlad
Дата: 21.06.2012 11:17:12
Таблоид
Затем рестартую службу ФБ. При этом тот процесс, ес-сно, исчезает. А файл fb_sort - всё равно остался.

PS.
Служба запускается так:
C:\1INSTALL\FIREBIRD\FB25RLS\bin\fb_inet_server.exe -s DefaultInstance
Тот процесс, который занимался сортировкой, был таким:
C:\1INSTALL\FIREBIRD\FB25RLS\bin\fb_inet_server.exe -x -h 1284
Уж сколько можно твердить, что
а) рестарт листенера CS (а у тебя именно CS) - это рестрат листенера и никого больше, на работающие процессы он никак не влияет
б) работающий процесс доработал и после этого убрал за собой
в) асинхронное обнаружение дисконнектов в CS\SC - только для коннектов по TCP\IP

Надоело одно и то же жевать, причём одним и тем же людям...