Oracle Database JDBC-Treiber, Versionen vor 12:
Der Treiber weist jeder Spalte die maximale Größe multipliziert mit der Anzahl der Zeilen in fetchSize
zu vor der Ausführung der Abfrage.
Zum Beispiel für einen VARCHAR(4000)
Spalte werden 8k Bytes mal fetchSize
zugewiesen .
Versionen 12 (und höher):
Es weist ungefähr 15 Bytes pro Spalte und Zeile in fetchSize
zu vor der Ausführung der Abfrage. Nach der Ausführung weist der Treiber in Version 12 nur so viel zu, wie zum Speichern der tatsächlichen Zeilendaten erforderlich ist.
Daher verbrauchen die Treiber der Version 12 in der Regel wesentlich weniger Speicher als die Treiber der früheren Versionen.
Ihr Beispiel :
In Ihrem Beispiel ein VARCHAR(20)
kann bis zu 40 Bytes groß sein, eine NUMBER
kann bis zu 22 Bytes groß sein und ein VARCHAR(100)
sein so groß wie 100 Bytes. Mit der fetchSize
auf 100 gesetzt würden die älteren Treiber (40 + 22 + 100) * 100 = 16k
zuweisen . Der Treiber der Version 12 würde 3 * 15 * 100 = 4.5k
zuweisen . Es gibt zusätzlichen Overhead in beiden Treibern, den ich ignoriere.