powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / commit + delete from mon$statements в 2.5: "асинхронный" ?
23 сообщений из 23, страница 1 из 1
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563419
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Запустил на копии продакшена некий тягомотный отчет (с трейсом). Никаких "помех" выполнению на хосте нет:
top
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
top - 17:19:03 up 4 days, 19:50,  2 users,  load average: 1.00, 0.99, 0.77
Tasks: 163 total,   1 running, 162 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  : 94.0%us,  6.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu8  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu9  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu10 :  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu11 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32988060k total, 28989720k used,  3998340k free,    45304k buffers
Swap: 32767996k total,   131796k used, 32636200k free, 26725644k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
19111 firebird  20   0 1408m 1.0g 6340 S 100.1  3.2 254:10.70 /opt/fb25/bin/fbserver
Отчёт тупит по-чёрному, ждать надоело, ввожу в другом окне:
Код: sql
1.
 commit; delete from mon$statements;

Трейс, однако, показывает только вот это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
2014-02-17T17:01:53.0010 (19111:0x7fa238ac2b28) EXECUTE_STATEMENT_FINISH
        prod25 (ATT_13, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        /opt/fb25/bin/isql:24596
                (TRA_2337, CONCURRENCY | WAIT | READ_WRITE)

Statement 889:
-------------------------------------------------------------------------------
delete from mon$statements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (MON$STATEMENTS NATURAL)
0 records fetched
  22136 ms, 1 fetch(es)

Между тем, запрос продолжает молотить - вижу песочные часики, окно приложения недоступно для переключения на него фокуса.

Повторил еще несколько раз грохнуть его из mon$statements - без толку :(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
2014-02-17T17:10:55.0010 (19111:0x7fa238ac2b28) EXECUTE_STATEMENT_FINISH
        prod25 (ATT_31, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        /opt/fb25/bin/isql:25089
                (TRA_2414, CONCURRENCY | WAIT | READ_WRITE)

Statement 973:
-------------------------------------------------------------------------------
delete from mon$statements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (MON$STATEMENTS NATURAL)
0 records fetched
  22478 ms, 1 fetch(es)

2014-02-17T17:16:53.0010 (19111:0x7fa238ac2b28) EXECUTE_STATEMENT_FINISH
        prod25 (ATT_31, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        /opt/fb25/bin/isql:25089
                (TRA_2416, CONCURRENCY | WAIT | READ_WRITE)

Statement 974:
-------------------------------------------------------------------------------
delete from mon$statements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (MON$STATEMENTS NATURAL)
0 records fetched
  22601 ms, 1 fetch(es)


Это в 2.5 не пролечено, что ли ?
В аттаче - несколько mon$-снапшотов по нему.

PS. LI-V2.5.3.26737, SuperServer
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563421
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, отправил раньше основного вопроса: а почему, соб-сно, delete from mon$ возвращает управление в подсказку ДО того, как действительно всё срубит ?
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563429
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

это всегда так было. И с чего бы это он синхронным стал?
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563431
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

лечили shutdown
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563434
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто всегда так было. И с чего бы это он синхронным стал?ну ладно, а срубать-то он ДОЛЖЕН или нет ?
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563436
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

должен конечно. Это наверное откаты долго делаются.
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563440
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

а если все-таки указать, кого именно срубать?
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563441
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LI-V2.5.3.26737, SuperServer упс. А тут фиг его знает.
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563443
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

забавно. Ты намекаешь на то что он может себя раньше рубануть. Думаю этого позволять нельзя.
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563447
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrа если все-таки указать, кого именно срубать?т.е. where attach_id <> current_connection добавить ? попробую...

PS. "дощитался", гад. И не срубился, конечно же:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
25 records fetched
2347544 ms, 618615 read(s), 3599 write(s), 452741915 fetch(es), 7839790 mark(s)

Table                             Natural     Index    Update    Insert    Delete 
**********************************************************************************
RDB$INDICES                                      13
RDB$RELATION_CONSTRAINTS
RLIB                                             194
CFG                                             121
REFINT                                            4
XLIB                                        1653831
FIN_ANALYTICS                               2594761
FIN_POSTINGS                                 711284
TMP$FIN_CACHE                              45795604              864068    864068
TMP$LIB_CACHE                               1728015                 121
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563460
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, в InterBase сделано иначе. при убиении коннектов через tmp$ (апдейтом состояния) собственный коннект не трогается. Все остальные - рубятся.
Код: sql
1.
UPDATE TMP$ATTACHMENTS SET TMP$STATE = 'SHUTDOWN'


Что интересно (и нелепо), что до сих пор в ИБ нет current_attachment, поэтому узнать собственный ID коннекта невозможно, а среди tmp$attachments его идентифицировать можно только по косвенным признакам. То есть, добавить к этому оператору where tmp$attachment_id <> nnn было бы можно, если бы...
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563491
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

вот интересно, а что будет в TMP$ATTACHMENTS после сего UPDATE, если ничего кроме своего коннекта, то синтаксис срубания оператора выглядит как минимум странным
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563500
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисесли ничего кроме своего коннекта
именно, остальные издыхают.

Симонов Денисто синтаксис срубания оператора выглядит как минимум странным
ну, в tmp$ с этим делом несколько иначе - меняются состояния "записей", а не "записи удаляются". Транзакции не убивается, а им делается rollback или commit (правда, про коммит почему-то написано в отношении limbo-транзакций).
А если нужно прекратить выполняемый запрос, то пишется
UPDATE TMP$ATTACHMENTS SET TMP$STATE = 'CANCEL'

Как по мне, так и то (удаление) и это (обновление) немного странно. Объединить было бы логичнее. Впрочем, х.з.
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563509
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

ещё более странно. Какой из нескольких выполняемых запросов прекратит этот оператор
Код: sql
1.
UPDATE TMP$ATTACHMENTS SET TMP$STATE = 'CANCEL'


Что касается транзакций, то ROLLBACK это хорошо (в FB этого сделать нельзя), но COMMIT незавершённой транзакции это уже не в какие ворота.
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563516
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrа если все-таки указать, кого именно срубать?не работает.
Код: plaintext
1.
2.
3.
4.
5.
SQL> set list on; set warning off; set sql dialect 3;  -- база в первом диалекте
SQL> select current_timestamp from rdb$database; commit; delete from mon$statements  where mon$attachment_id<>current_connection ; select current_timestamp from rdb$database;

CURRENT_TIMESTAMP               2014-02-17 18:26:29.0870

CURRENT_TIMESTAMP               2014-02-17 18:26:51.0020

в трейсе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
2014-02-17T18:26:51.0010 (19111:0x7fa238abe418) EXECUTE_STATEMENT_FINISH
        prod25 (ATT_89, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        /opt/fb25/bin/isql:27684
                (TRA_2671, CONCURRENCY | WAIT | READ_WRITE)

Statement 1354:
-------------------------------------------------------------------------------
delete from mon$statements  where mon$attachment_id<>current_connection 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (MON$STATEMENTS NATURAL)
0 records fetched
  21902 ms, 1 fetch(es)

Мониторинг показывает всё то же самое: срубаемому аттачу до лампады мои потуги.DTSREADSWRITESFETCHESMARKSSEQ_READSIDX_READSINS_CNTUPD_CNTDEL_CNTBK_OUTSPURGESEXPUNGES18:28:45.711988652174626901443623436571211457889274529414093586406812129920018:28:50.754990133174626911673303436571211457900637929414093586406812129920018:28:55.793991348174626921959223436571211457912066729414093586406812129920018:29:00.832992564174626932241093436571211457923491029414093586406812129920018:29:05.917993794174626942645813436571211457935051829414093586406812129920018:29:10.953995020174626953052063436571211457946614329414093586406812129920018:29:15.992996232174626963357243436571211457958064529414093586406812129920018:29:21.034997449174626973678353436571211457969532429414093586406812129920018:29:26.071998668174626983987283436571211457980986729414093586406812129920018:29:31.11110001641746269943339034365712114579924801294140935864068121299200
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563529
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

а на CS/SC работает?
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563561
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, НЕСТАБИЛЬНАЯ зараза! Воспроизводится только изредка. Судя по всему, надо ждать некоторое время, не менее 5 минут.
Иначе
SQL> set list on; set warning off; set sql dialect 3; select current_timestamp from rdb$database; commit; delete from mon$statements where mon$attachment_id<>current_connection; select current_timestamp from rdb$database;

- выдаёт обе строки немедленно, а через 20 сек запрос действительно срубается.
Такого я еще не видел

PS. про SC попозжее отпишусь.
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563581
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

у меня такие подозрения. Поскольку в 2.5 SS не параллелится, то коннекту из которого ты срубаешь тяжёлый запрос просто не даётся квант единственного ядра и он вынужден ожидать пока тяжёлый запрос сам завершиться.
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563598
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

у него запрос отмены успешно завершается, т.е. он ничего не ждет
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563602
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrу него запрос отмены успешно завершается, т.е. он ничего не ждета чего он тогда наверху ждал 20 сек ? Вот:

Код: plaintext
1.
2.
CURRENT_TIMESTAMP               2014-02-17 18: 26:29 .0870

CURRENT_TIMESTAMP               2014-02-17 18: 26:51 .0020
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563606
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

я имел ввиду не ждет окончания твоего тяжелого запроса. А свой квант времени он есс-но ждет.
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563630
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
увы, *не* могу воспроизвести, уже в надцатый раз пробую :(
Время реакции срубаемого аттача как-то зависит от длительности времени его работы, т.е. сколько он там намолотил (м.б. из-за роста объема того, что он должен откатывать ?)
Но повторить этот "подвиг" снова - не получается, даже если дать ему проработать 20 минут.
...
Рейтинг: 0 / 0
commit + delete from mon$statements в 2.5: "асинхронный" ?
    #38563740
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисно COMMIT незавершённой транзакции это уже не в какие ворота.
для лимбо-шмимбо - вполне даже очень, только непонятно, в случае облома какого фига такая транзакция делает в tmp$transactions. В общем, куча вопросов, которые как-то лень проверять :-)
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / commit + delete from mon$statements в 2.5: "асинхронный" ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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