Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Alokacja pamięci Oracle JDBC podczas pobierania zestawu wyników

Sterownik Oracle Database JDBC, wersje przed 12:

Sterownik przydziela maksymalny rozmiar dla każdej kolumny razy liczbę wierszy w fetchSize przed wykonaniem zapytania.

Na przykład dla VARCHAR(4000) kolumna przydzieli 8k bajtów razy fetchSize .


wersje 12 (i nowsze):

Przydziela około 15 bajtów na kolumnę na wiersz w fetchSize przed wykonaniem zapytania. Po wykonaniu sterownik w wersji 12 przydziela tylko tyle, ile jest potrzebne do przechowywania rzeczywistych danych wiersza.

W rezultacie sterowniki w wersji 12 zwykle zużywają znacznie mniej pamięci niż sterowniki wcześniejszych wersji.


Twój przykład :

W twoim przykładzie VARCHAR(20) może mieć nawet 40 bajtów, NUMBER może mieć wielkość 22 bajtów i VARCHAR(100) tak duże jak 100 bajtów. Z fetchSize ustawione na 100, starsze sterowniki przydzielą (40 + 22 + 100) * 100 = 16k . Sterownik w wersji 12 przydzieli 3 * 15 * 100 = 4.5k . W obu sterownikach występuje dodatkowe obciążenie, które ignoruję.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. brak ocijdbc9 w java.library.path

  2. Oracle — w jaki sposób Oracle zarządza wyciągami DML specyficznymi dla transakcji

  3. 12c Plany adaptacyjne

  4. Czy jest jakiś powód, aby używać jednocześnie klucza podstawowego i klucza unikatowego w tym samym polu?

  5. jak wysłać parametry do wyzwalania w Oracle