|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
Сколько поле Varchar2 реально занимает место на диске? https://stackoverflow.com/questions/20417845/what-is-the-major-difference-between-varchar2-and-char Правильно ли я понимаю что Varchar2(4000) - это максимальное допустимое колличество символов. И если я буду записывать строки с только одним символов то занимать они будут условно один байт? Или даже строка с одинм символом - будет занимать 4000 байт? Т.е. если у меня есть сеществующая таблица с Varchar2(255), я меняю на Varchar2(4000) Смениться ли у меня реально используемое место на диске? Как дело обстоит в постресе? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 11:56 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
glorsh66 Как дело обстоит в постресе? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 12:08 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
glorsh66 Правильно ли я понимаю что Varchar2(4000) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 12:12 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
For each row, Oracle Database stores each value in the column as a variable-length field unless a value exceeds the maximum length, in which case the database returns an error. For example, in a single-byte character set, if you enter 10 characters for the last_name column value in a row, then the column in the row piece stores only 10 characters (10 bytes), not 25. Using VARCHAR2 reduces space consumption. т.е. физически сколько написанно букв столько и занимает? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 12:46 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
glorsh66 физически сколько написанно букв столько и занимает? Нет конечно. - не следует путать символы с байтами, размер байтовой последовательности зависит от кодировки БД и типа данных (Nvarchar2 всегда мультибайт). - хранение осуществляется в виде, похожем на строку pascal, т.е. строка содержит префикс - размер. - хранение null (равно как пустой строки) потребует 1 байт, если поле не последнее в физическом ордере. - на физический размер таблицы повлияют еще 100500 факторов, начиная с размера блока (расходы на служебные структуры + pctfree) и до hwm. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 13:11 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
glorsh66 For each row, Oracle Database stores each value in the column as a variable-length field unless a value exceeds the maximum length, in which case the database returns an error. For example, in a single-byte character set, if you enter 10 characters for the last_name column value in a row, then the column in the row piece stores only 10 characters (10 bytes), not 25. Using VARCHAR2 reduces space consumption. т.е. физически сколько написанно букв столько и занимает? да. плюс небольшой заголовок поля, где указан размер строки в байтах. иногда даже заголовка нет. количество байтов зависит от кодировки. буква может несколько байт занимать. это и чисел касается тоже. сколько значащих десятичных цифр в числе, столько и будет выделено места под хранение. +- особенности кодирования чисел в БД - байты знака и порядка числа. тип CHAR дополняет значение пробелами до фиксированного размера. date тоже фиксированного размера, даже если время 00:00:00. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 13:20 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
Но VARCHAR2 пробелами ничего не дополняет? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 14:57 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
glorsh66 Но VARCHAR2 пробелами ничего не дополняет? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 14:58 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
Если настолько нет доверия документации - есть функция dump. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 15:37 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
PuM256, Описана в документации? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 16:04 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
PuM256 Если настолько нет доверия документации - есть функция dump. DUMP про диск ничего не знает. Это внутреннее представление значения аргумента функции, которое, в момент вызова, очевидно, находится не на диске, а в стеке. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 01:28 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
glorsh66 Т.е. если у меня есть сеществующая таблица с Varchar2(255), я меняю на Varchar2(4000) Смениться ли у меня реально используемое место на диске? Нет. Существующие данные не изменятся. Такой подход позволяет расширять типы колонок в огромных таблицах мгновенно. Либо СУБД отклоняет DDL запрос ALTER TABLE MODIFY и придётся делать более сложную миграцию. И новые данные не будут занимать места больше чем нужно для хранения. Если строка помещалась в varchar2(255) то и в varchar2(4000) она займёт столько же места. Т.е. 255 или 4000 это скорее ограничение целостности, чем параметр физического хранения данных. СУБД просто проверяет, что длинна строки не превышает установленный предел. С другой стороны потребитель данных должен выделять достаточно места в буфере, чтобы сохранять любые извлекаемые данные, или выделять память на лету. Так, если генератор отчёта увидит в таблице вместо колонки с типом varchar2(255), тип varchar2(4000) он скорее всего выделит в буфере почти в 4 раза больше памяти чтобы гарантированно принять любые строки, которые могут быть в таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 01:43 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
mcureenab DUMP про диск ничего не знает. Это внутреннее представление значения аргумента функции, которое, в момент вызова, очевидно, находится не на диске, а в стеке. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 02:26 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
Elic mcureenab DUMP про диск ничего не знает. Это внутреннее представление значения аргумента функции, которое, в момент вызова, очевидно, находится не на диске, а в стеке. по теме - никакой. она даже размер заголовка поля в записи не показывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 09:21 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
mcureenab DUMP про диск ничего не знает. Это внутреннее представление значения аргумента функции, которое, в момент вызова, очевидно, находится не на диске, а в стеке. Можно пример, когда данные на диске отличаются от "внутреннего представления значения аргумента функции"? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 10:57 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
PuM256, имхо Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
на диске может быть в обратном порядке cba ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 12:58 |
|
Varchar2 реально занимаемое место на диске
|
|||
---|---|---|---|
#18+
Не может ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 08:53 |
|
|
start [/forum/topic.php?fid=52&fpage=28&tid=1880560]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 273ms |
total: | 418ms |
0 / 0 |