Драйвер JDBC DB2 (тип 4) зависает при выполнении () - PullRequest
0 голосов
/ 20 марта 2012

Я выполняю серию SQL-операторов, используя соединение JDBC на сервере DB2. На последнем execute() простого sql: DELETE FROM MYTABLE поток зависает на длительный период времени, даже если таблица содержит одну запись.

Сервер приложений, который я использую - WAS. Интересно, является ли это проблемой, специфичной для комбинации WAS и DB2, поскольку такой же код работает в других средах.

Кто-нибудь знает, что здесь происходит?

Ответы [ 2 ]

3 голосов
/ 20 марта 2012

Вы вводили команду непосредственно из CLP?Это может быть другая проблема, такая как:

  • Проблема журнала транзакций: Есть много строк, которые нужно удалить, и это требует времени.Кроме того, журналы транзакций достигли предела, и база данных не выполняет откат, но ожидает пустой журнал, освобожденный другими транзакциями.
  • Проблема блокировки (параллелизм): некоторые строки, которые вы пытаетесь удалить, имеютблокирует другие транзакции, и приложения должны ждать их освобождения (блокировка ожидания)

Кроме того, попробуйте выполнять частые коммиты.

1 голос
/ 20 марта 2012

Удаление строк в базе данных может быть ужасной работой: не забывайте, что сервер базы данных будет записывать все данные таблицы в случае ОТКЛЮЧЕНИЯ.Тогда я предполагаю, что проблема исходит из базы данных, особенно если в таблице много строк.

Вы пытались вручную запустить все запросы SQL в интерактивной среде?

...