Jestem programistą w aplikacji internetowej, która korzysta z bazy danych Oracle. Jednak często interfejs użytkownika uruchamia operacje na bazie danych, których przetworzenie zajmuje trochę czasu. W rezultacie klient chce pasek postępu, gdy wystąpią takie sytuacje.Określanie postępu zapytania (Oracle PL/SQL)
Niedawno odkryłem, że mogę wysłać zapytanie V $ SESSION_LONGOPS z drugiego połączenia, a to jest świetne, ale działa tylko w przypadku operacji, które trwają dłużej niż 6 sekund. Oznacza to, że nie mogę zaktualizować paska postępu w interfejsie użytkownika, dopóki nie minie 6 sekund.
Zrobiłem badania czasu oczekiwania w V $ SESSION, ale o ile widziałem, to nie obejmuje oczekiwania na kwerendę.
Czy istnieje sposób na uzyskanie postępu aktualnie uruchomionego zapytania dotyczącego sesji? A może powinienem ukrywać pasek postępu, aż minie 6 sekund?
Jeśli masz 100 x 1 sekundę operacji. Żadne z nich nie pojawi się w SESSION_LONGOPS. Jeśli masz 2 sekwencyjne dziesięć sekund operacji, po pierwszym trafieniu 100%, drugi zaczyna się od 0%. To byłby frustrujący pasek postępu.Myślę, że jest to jedna z tych rzeczy, które wymagają kręcenia się, a nie paska stanu, ponieważ po prostu nie wiesz, jak długo to potrwa. –