Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / commit + delete from mon$statements в 2.5: "асинхронный" ? / 23 сообщений из 23, страница 1 из 1
17.02.2014, 17:21:01
    #38563419
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
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
17.02.2014, 17:21:56
    #38563421
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
пардон, отправил раньше основного вопроса: а почему, соб-сно, delete from mon$ возвращает управление в подсказку ДО того, как действительно всё срубит ?
...
Рейтинг: 0 / 0
17.02.2014, 17:29:43
    #38563429
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
Таблоид,

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

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

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

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

забавно. Ты намекаешь на то что он может себя раньше рубануть. Думаю этого позволять нельзя.
...
Рейтинг: 0 / 0
17.02.2014, 17:43:00
    #38563447
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
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
17.02.2014, 17:51:06
    #38563460
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
кстати, в InterBase сделано иначе. при убиении коннектов через tmp$ (апдейтом состояния) собственный коннект не трогается. Все остальные - рубятся.
Код: sql
1.
UPDATE TMP$ATTACHMENTS SET TMP$STATE = 'SHUTDOWN'


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

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

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

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

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


Что касается транзакций, то ROLLBACK это хорошо (в FB этого сделать нельзя), но COMMIT незавершённой транзакции это уже не в какие ворота.
...
Рейтинг: 0 / 0
17.02.2014, 18:32:39
    #38563516
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
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
17.02.2014, 18:38:23
    #38563529
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
Таблоид,

а на CS/SC работает?
...
Рейтинг: 0 / 0
17.02.2014, 19:03:00
    #38563561
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
Блин, НЕСТАБИЛЬНАЯ зараза! Воспроизводится только изредка. Судя по всему, надо ждать некоторое время, не менее 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
17.02.2014, 19:18:35
    #38563581
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
Таблоид,

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

у него запрос отмены успешно завершается, т.е. он ничего не ждет
...
Рейтинг: 0 / 0
17.02.2014, 19:38:01
    #38563602
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
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
17.02.2014, 19:45:19
    #38563606
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
commit + delete from mon$statements в 2.5: "асинхронный" ?
Таблоид,

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


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