JDBC с несколькими запросами на вставку и удаление заходит в тупикJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JDBC с несколькими запросами на вставку и удаление заходит в тупик

Сообщение Anonymous »

У меня есть API, с помощью которого я выполняю серию вставок, а затем удаление в таблице1. Но иногда, когда я отправляю слишком много запросов, он блокируется.
Таблица1 имеет некластеризованный уникальный индекс для столбца: cid [varchar(24)], sum_value [varchar(48) ] и enter_time_string[varchar(50)]
Ниже приведен мой URL-адрес jdbc:

Код: Выделить всё

jdbc:sqlserver://localhost:1433;database=srik_2024;integratedSecurity=false;applicationName=srik;sendStringParametersAsUnicode=false;encrypt=true;trustServerCertificate=true;responseBuffering=adaptive;selectMethod=direct
Ниже приведен набор операторов вставки, созданных с помощью кода Java во время выполнения одной транзакции, выполняемой одна за другой:

Код: Выделить всё

insert into table1(table1_id, cid, sum_value, entry_time, entry_time_string,  buffer_entry_flag, user)
values('m240527090938173704245f7', 'm22112317542685511944168', '2582013865', '2024-05-27 09:02:13.991', '2024-05-27 09:02:1', 0, 'SRIK')

insert into table1(table1_id, cid, sum_value, entry_time, entry_time_string, buffer_entry_flag, user)
values('m240527090938175704255f7', 'm22112317542685511944168', '2582013865', '2024-05-27 09:02:13.991', '2024-05-27 09:02:0', 1, 'SRIK')

insert into table1(table1_id, cid, sum_value, entry_time, entry_time_string, buffer_entry_flag, user)
values('m240527090938175704265f7', 'm22112317542685511944168', '2582013865', '2024-05-27 09:02:13.991', '2024-05-27 09:02:2', 1, 'SRIK')

delete from table1
where table1_id in ('m240527090938175704255f7', 'm240527090938175704265f7')
Но когда мы делаем несколько запросов одновременно, тогда все запросы будут генерировать запрос, как показано в приведенном выше формате, с разным sum_value, но в основном с одинаковым cid иEntry_time_string.
Один из вариантов, который я мог бы рассмотреть, — это повторить попытку фиксации транзакции под блоком catch, если есть лучший способ добиться этого.
Примечание: я делаю эту множественную вставку, чтобы предотвратить повторный запрос, вызванный в течение одного и того же интервала времени в 10 секунд.
Код Java:
Я попытался перехватить исключение, которое возникает из-за взаимоблокировки на основе Код ошибки SQL и повторите попытку 5, но хотелось проверить, смогу ли я сделать что-нибудь лучше этого.

Подробнее здесь: https://stackoverflow.com/questions/785 ... eadlocking
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»