ResultSet Memory - PullRequest
       11

ResultSet Memory

2 голосов
/ 11 июля 2011

У меня ResultSet из 100 тыс. Записей, каждая из которых имеет 5 ячеек, 2 из них имеют тип данных int и 3 имеют тип данных Varchar (100)

Мой вопрос заключается в том, как память выделяется для набора результатов дляэти типы данных, когда запрос выполняется из Java-программы

специально для типа данных varchar - все ли ячейки varchar (100) имеют одинаковую память 100 символов или это зависит от данных, содержащихся в каждой ячейке varchar (100)

например, скажем, у меня есть следующая запись с двумя ячейками на varchar (100)

------------------------
| "abc" | | "pqrstuv" |
------------------------

размер памяти здесь 10 символов или 200 символов?

касается

Ответы [ 2 ]

1 голос
/ 11 июля 2011

тип "varchar" предназначен для строк переменной длины.таким образом, ваши строки будут занимать только количество места как количество символов на самом деле в строке (так что 10 символов в вашем примере).если бы вы определили эти поля как просто "char" (фиксированная длина), , то они будут занимать 100 символов каждое.

0 голосов
/ 11 июля 2011

Большинство драйверов JDBC поддерживают разбиение на страницы наборов результатов. Это означает, что одновременно загружается только часть результатов. Объем используемой внутренней памяти вряд ли будет иметь значение, поскольку он будет только подмножеством данных. Если вы сохраняете все записи, объем используемых данных является более важным. Когда вы сохраняете строку, она будет использовать 1-2 байта на символ (плюс некоторые накладные расходы) в зависимости от вашей JVM.

В любом случае, если у вас нет мобильного устройства, используемая память, вероятно, будет очень мала по сравнению с вашей памятью.

...