/ / Problem z limitem czasu zarządzania transakcjami - mysql, sql, spring, hibernacja

Problem limitu czasu zarządzania transakcjami - mysql, sql, spring, hibernate

Próbuję uruchomić zapytanie z naszej aplikacjiprzez springs 2.5 i hibernację 3, Ale zapytanie nie jest przekroczone limitu czasu ani nie zwraca wyników (zapytanie zostaje zawieszone). Gdy uruchomię to samo zapytanie z przeglądarki zapytań, działa dobrze.

Mimo że zwiększyłem limit czasu zapytania, nadal nie jestem w stanie pobrać wyniku.

Próbowałem zwiększyć limit czasu wykonywania zapytania, nie udało się zwrócić rekordów

<property name="javax.persistence.query.timeout" value="3000" />

<tx:advice id="defaultTxAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- Keep SequenceService in a isolation transaction -->
<tx:method name="get*" read-only="true" />
<!-- By default, A runtime exception will rollback transaction. -->
<tx:method name="*" timeout="100" rollback-for="ApplicationException" />
</tx:attributes>
</tx:advice>

Wszelka pomoc / sugestie byłyby bardzo mile widziane

Odpowiedzi:

0 dla odpowiedzi № 1

Oto moje przemyślenia na temat tego problemu. Ponieważ nie znalazłem tutaj żadnych odpowiednich kodów ..

  1. Ze względu na wykonanie wielu zapytań podczas pojedynczego pobierania (problemy takie jak problem n + 1 w trybie hibernacji). Wskazówka:Upewnij się, że ustawiłeś show SQL jako true na maszynie programisty
  2. Z powodu nieprawidłowej obsługi zapytań w kodzie,na przykład, jeśli wykonujesz iterację n razy. Serwer bazy danych uzna to za pewne zagrożenie i przejdzie w stan blokady i zatrzyma wykonywanie zapytań na pewien czas.
  3. Nieprawidłowa obsługa limitu czasu transakcji, tak jak w przypadku zwiększenia wartości limitu czasu transakcji, prawdopodobnie zablokuje ona bazę danych na długi czas.

Istnieją również inne możliwości, ale nie mogę zgłaszać żadnych sugestii, chyba że zobaczę kod.