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 № 1Oto moje przemyślenia na temat tego problemu. Ponieważ nie znalazłem tutaj żadnych odpowiednich kodów ..
- 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
- 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.
- 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.