W Oracle DBMS, która jest lepszą wydajnością, wywołanie procedury składowanej java z innej przechowywanej procedury pl/sql lub wywołanie procedury składowanej pl/sql z innej przechowywanej procedury pl/sql.Procedura składowana Java Procedura przechowywana w języku PL/SQL
Przy okazji mam pętlę w mojej procedurze pl/sql, która wywoła procedurę java wiele razy (tj. Mój kod jest odwracany między PL/SQL i Java Stored Procedures), więc czy to spowalnia wydajność)?
Chciałbym założyć, że każda rozmowa z PL/SQL do Java wymaga przełączanie kontekstu, więc domyślam się, że działa dość wolno. Być może uda się całkowicie pozbyć pętli, ale nie da się tego powiedzieć bez obejrzenia kodu. –
Dzięki, Frank, właściwie ja, ve wyliczyliśmy czas w milisekundach, wywołania równoważnej procedury pl/sql z taką samą liczbą cykli pętli (cykl pętli 600), a wynik był, prawie nie było różnicy, z wyjątkiem tego, że zakończyła się około 100 milisekund wcześniej. –
Zgadzam się z Frankiem, że będą nieuniknione dwa przełączniki kontekstu dla każdego wywołania procedury składowanej Java (PL/SQL -> Java iz powrotem). Jeśli wywołana procedura jest czysta PL/SQL (tj. Brak dostępu SQL), wówczas opcja PL/SQL byłaby szybsza (spróbuj tego ponad 10000 iteracji zamiast 600). Czy procedura nazwana PL/SQL mogłaby być zdefiniowana jako DETERMINISTYCZNA? Jeśli tak, to może zaoszczędzić ci trochę czasu, jeśli któryś z parametrów zostanie powtórzony w Twojej pętli. Jakiej wersji Oracle używasz? Jeśli jest to 11g, funkcja wstawiania powinna sprawić, że wywołanie PL/SQL do PL/SQL będzie naprawdę szybkie. – Ollie