powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE + Java = (8-o)
5 сообщений из 5, страница 1 из 1
ASE + Java = (8-o)
    #36550949
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас серьёзные проблемы, связанные с эксплуатацией ASE и клиента на Java
(JBoss + стандартный Sybase JConnect 6)

Почему-то клиенты, приходящие с Java-сервера, блокируют всех и всё, создавая временные таблицы
в tempdb, видимо, внутри длинной транзакции (иначе оно недолго бы блокировало, и блокирующий процесс не держал бы блокировки на другие таблицы, наши). Ну, в общем, по классике как не надо делать. Также есть подозрение, что создаются эти временные таблицы внутри временных хранимых процедур, создаваемых также в tempdb.

Мы
не используем никогда прямые запросы. Только вызовы процедур.

не открываем явно транзакции, всё управление транзакциями -- в серверных хранимых процедурах. Используется autocommit.

Вышеперечисленное гарантировано на 99%. Ну т.е. почти на 100%.

Остаётся одна мысль -- это где-то косячит Java, т.е. JDBC-драйвер.

ВОПРОС: Не знает ли кто из людей, использующих JDBC для доступа к ASE, каких-то стандартных ситуаций или настроек, когда JDBC может или будет делать подобные гадости ?

Вот ситуация по процессам в момент проблемы (аналог sp_who):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
loginame       spid   fid    CPU         IO          MEM         proc_name                      status     command          bk       bktime   dbname
-------------- ------ ------ ----------- ----------- ----------- ------------------------------ ---------- ---------------- -------- -------- ---------------
tmp_portal ,   11     0      4           158         21          core_QPAYSHEET_auto_prepschem  running    UPDATE           0        0        MYDB
sa ,           60     0      0           0           6           (null)                         running    SELECT           0        0        MYDB
tmp_portal ,   83     0      58          0           1062        core_MISC_sender_getlist       running    SELECT           0        0        MYDB
tmp_portal ,   90     0      1           0           11          core_VISIT_feedtimebl_get      lock sleep CREATE TABLE     135      1        tempdb
reporter ,     112    0      12          618         21          core_IMPREQUEST_ccl_print      running    OPEN CURSOR      0        0        MYDB
tmp_portal ,   135    0      18          1222        24          (null)                         running    CREATE TABLE     0        0        tempdb
tmp_portal ,   228    0      15          0           20          core_ECONUNIT_oldcustody_eget  lock sleep DELETE           11       98       MYDB
reporter ,     230    0      2           2           10          core_WORLD_event_register      running    COMMIT TRANSACTI 0        0        MYDB
tmp_portal ,   252    0      8           525         26          core_IMPREQUEST_self_get       running    SELECT           0        0        MYDB
tmp_portal ,   278    0      30          0           21          core_DISPINSTR_web_mwhlist     lock sleep CREATE TABLE     135      0        tempdb
tmp_portal ,   323    0      1           854         10          core_VISIT_feedtimebl_get      lock sleep INSERT           387      3        MYDB
tmp_portal ,   387    0      14          70          33          core_CARVISIT_sou_cntloading   runnable   OPEN CURSOR      0        0        MYDB
tmp_portal ,   398    0      36          274         11          core_VISIT_feedtimebl_get      lock sleep INSERT           387      2        MYDB


а вот -- по локам (аналог sp_lock).
Код: 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.
25.
spid(fid) login        status[io/cpu/mem]<<blckd(t)             statement                                     lock
--------- ------------ ---------------------------------------- --------------------------------------------- -----------------------------------------------------------------------
90        tmp_portal   lock sleep [0/1/11]<<135(2s)              CREATE TABLE #59 @198

135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ex_table(tempdb.sysobjects)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   2*Ind pg/Ex_page(tempdb.sysobjects)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ex_table(tempdb.sysindexes)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ind pg/Ex_page(tempdb.sysindexes)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142  !1*Ex_table-blk(tempdb.syscolumns)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ind pg/Ex_page(tempdb.syscolumns)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Sh_table(tempdb.systypes)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ex_page(tempdb.sysprocedures)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ex_table(tempdb.sysprocedures)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   3*Ind pg/Ex_page(tempdb.sysprocedures)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ex_table(tempdb.syscomments)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ex_intent(tempdb.sysdepends)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ex_row(tempdb.systabstats)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ex_intent(tempdb.systabstats)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ex_table(tempdb.#temp________0200135000)
135       tmp_portal   running [2067/18/24]                     _temp_drv_tr_845647859 CREATE TABLE #34 @142   1*Ex_table(tempdb._temp_drv_tr_845647859)

271       tmp_portal   lock sleep [0/7/20]<<135(1s)              CREATE TABLE #6 @83

278       tmp_portal   lock sleep [0/30/21]<<135(1s)             CREATE TABLE #26 @129


Тут видно, что три процесса блокируются 135 процессом, который блокирует всё, что
только можно в tempdb.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 
 1*Ex_table(tempdb.sysobjects)
 2*Ind pg/Ex_page(tempdb.sysobjects)
 1*Ex_table(tempdb.sysindexes)
 1*Ind pg/Ex_page(tempdb.sysindexes)
 1*Ind pg/Ex_page(tempdb.syscolumns)
 1*Sh_table(tempdb.systypes)
 1*Ex_page(tempdb.sysprocedures)
 1*Ex_table(tempdb.sysprocedures)
 3*Ind pg/Ex_page(tempdb.sysprocedures)
 1*Ex_table(tempdb.syscomments)
 1*Ex_intent(tempdb.sysdepends)
 1*Ex_row(tempdb.systabstats)
 1*Ex_intent(tempdb.systabstats)

включая также syscolumns, который всем и мешает

Код: plaintext
1.
!1*Ex_table-blk(tempdb.syscolumns)


и ещё держит два непонятных лока на две таблицы в tempdb:

Код: plaintext
1.
2.
1*Ex_table(tempdb.#temp________0200135000)
1*Ex_table(tempdb._temp_drv_tr_845647859)

Это точно таблицы не из нашего кода.

Что это могло бы быть ?
...
Рейтинг: 0 / 0
ASE + Java = (8-o)
    #36551210
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может multiple tempdb поможет?
...
Рейтинг: 0 / 0
ASE + Java = (8-o)
    #36551251
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolchanovМожет multiple tempdb поможет?
очень похоже на то

если конкуренция за системные таблицы в tempdb, то multiple tempdb думаю вас спасут
...
Рейтинг: 0 / 0
ASE + Java = (8-o)
    #36554576
Dmitry..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть опыт но никогда не встречал такого.
думаю, что проблема в ваших процедурах...

не увидел с каким уровнем блокировки жава работает с базой.
и что это за временные процедуры создающиеся в tempdb???
...
Рейтинг: 0 / 0
ASE + Java = (8-o)
    #36555863
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry.. wrote:

> есть опыт но никогда не встречал такого.
> думаю, что проблема в ваших процедурах...

Ну может быть и так.
В смысле, в своих процедурах мы тоже проблемы нашли.
Сбило с толку, что коннекции в другой базе данных почему-то работают
(текущая база данных у них tempdb почему-то).

> не увидел с каким уровнем блокировки жава работает с базой.
> и что это за временные процедуры создающиеся в tempdb???

Процедуры какие-то создаются, это точно. Одну мы поймали за хвост, её текст был

DEFAULT 1

и всё.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE + Java = (8-o)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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