2011-10-31 8 views
8

Wywołuję instrukcje aktualizacji jeden po drugim z serwletu do DB2. Otrzymuję komunikat o błędzie sqlstate 40001, kod przyczyny 68, który został znaleziony z powodu przekroczenia limitu czasu impasu.Limit czasu impasu DB2 Sqlstate: 40001, kod przyczyny 68 z powodu instrukcji aktualizacji wywoływanych z apletu przy użyciu SQL

  • Jak mogę rozwiązać ten problem?
  • Czy można to rozwiązać, ustawiając limit czasu zapytania?
  • Jeśli tak, to jak używać go z instrukcjami aktualizacji w serwlecie lub gdzie z niego korzystać?

Odpowiedz

11

Kod przyczyny 68 informuje już, że jest to spowodowane przekroczeniem limitu czasu blokady (zakleszczenie to kod przyczyny 2) Może to być spowodowane tym, że inni użytkownicy uruchamiają zapytania w tym samym czasie, w którym używają tych samych danych, do których użytkownik uzyskuje dostęp, lub własne wiele aktualizacji.

Zacznij od uruchomienia db2pd -db locktest -locks show detail z wiersza komend db2, aby zobaczyć, gdzie znajdują się blokady. Następnie należy uruchomić coś takiego:

select tabschema, tabname, tableid, tbspaceid 
from syscat.tables where tbspaceid = # and tableid = # 

wypełnieniu # symboli z numerem identyfikacyjnym można uzyskać z wyjścia polecenia db2pd.

Po zobaczyć, gdzie są zamki, oto kilka wskazówek:

częstotliwość ◦Deadlock może być czasami zmniejszone poprzez zapewnienie, że wszystkie wnioski o dostęp do swoich wspólnych danych w tej samej kolejności - sposób, na przykład, że dostęp (i dlatego zablokuj) wiersze w tabeli A, a następnie w tabeli B, a następnie w tabeli C i tak dalej.

zaczerpnięte z: http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.trb.doc/doc/t0055074.html

zalecana literatura: http://www.ibm.com/developerworks/data/library/techarticle/dm-0511bond/index.html

Addendum: jeśli serwlet lub inny winny aplikacja jest przy użyciu znalezionych być zaangażowane w impasu select wypowiedzi, można spróbować dołączanie with ur do wybranych wypowiedzi jeśli dokładność nowo zaktualizowanych (lub wstawionych) danych nie jest ważna.

+0

Należy zauważyć, że artykuł mówi o ** zmniejszeniu ** częstotliwości występowania zakleszczeń, a nie ** zapobieganiu ** ich całkowicie. Zgodnie z http://stackoverflow.com/a/112256/14731 konsekwentna kolejność blokowania nie zapobiega zakleszczeniom. Możemy maksymalnie ograniczyć ich częstotliwość. – Gili

Powiązane problemy