BD-1st-2.4-lab10.tresc-1.1-Slajd27

Z Studia Informatyczne
Wersja z dnia 09:22, 9 sie 2006 autorstwa PKrzyzagorski (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Zwiększanie przesyłanej liczby krotek

Zwiększanie przesyłanej liczby krotek


Kiedy wykonywane jest zapytanie, z reguły wszystkie krotki stanowiące jego wynik nie są od razu przesyłane z SZBD do klienta (choć zależy to również od implementacji sterownika). W najprostszym przypadku, każde wywołanie metody „next” powoduje przesłanie jednej krotki z SZBD do klienta. Jak łatwo zauważyć, jest to rozwiązanie wysoce niewydajne, gdyż dla każdej krotki wyniku zapytania należy poświęcić czas konieczny na wymianę komunikatów pomiędzy klientem a SZBD. W sterowniku JDBC dla SZBD Oracle zaimplementowano możliwość zmiany liczby przesyłanych jednorazowo krotek. Można to wykonać za pomocą metody „setRowPrefetch” dostępnej poprzez typ „OracleStatement” stanowiący implementację interfejsu „Statement” z JDBC API. Przykład (1) pokazuje sposób użycia tej metody. W pierwszym kroku tworzony jest nowy obiekt typu „Statement”. Następnie, za pomocą rzutowania, typ tego obiektu jest zmieniany na typ „OracleStatement” (taka operacja uda się jedynie w sytuacji, kiedy korzystamy ze sterownika Oracle’a). Po zmianie typu obiektu mamy dostęp do metody „setRowPrefetch”, której jako parametr przekazujemy liczbę 10. Oznacza to, że kiedy zajdzie potrzeba pobrania krotek wyniku zapytania z SZBD, to pobrane zostanie od razu 10 krotek. Typ „OracleStatement” zawiera również metodę, która pozwala na ustawienie domyślnej liczby przesyłanych krotek – „setDefaultRowPrefetch”. W sytuacji, kiedy chcemy zwiększyć liczbę przesyłanych krotek dla zapytań przekompilowanych, należy użyć rzutowania na typ „OraclePreparedStatement”. Przykład (2) stanowi proste wykonanie zapytania o listę nazwisk pracowników. W tej pętli, komunikacja pomiędzy SZBD a aplikacją kliencką nastąpi jedynie dwukrotnie (najpierw pierwsze 10 krotek, potem kolejne 4).

Rozwiązanie przedstawione na tym slajdzie jest specyficzne dla SZBD Oracle. Inne SZBD mogą implementować analogiczne rozwiązania. Niestety nie są one objęte specyfikacją JDBC. Postanowiono zatem nie przedstawiać zadań demonstrujących to rozwiązanie.


Pełny kod programu, którego fragmenty przedstawiono na slajdzie, załączono do kursu w pliku JDBCELearning8.java.




<< Poprzedni slajd | Spis treści | Następny slajd >>