Наборы символов char и varchar в MySQL и размеры хранилища

Интересно, сколько фактического места для хранения будут занимать эти два типа данных, поскольку документация MySQL немного непонятно по делу.

CHAR (M )M × w байт, 0 <= M <= 255, где w — количество байтов. требуется для символа максимальной длины -в наборе символов

VARCHAR (M ), VARBINARY (M )L + 1 байт, если значения столбца требуют 0–255 байт, L + 2 байта, если для значений может потребоваться более 255 байт

. Мне кажется, это означает, что для базы данных, закодированной в utf8 -, CHAR всегда будет занимать 32 бита на символ, в то время как VARCHAR займет от 8 до 32 в зависимости от фактической длины сохраненных символов в байтах. Это правильно? Или VARCHAR подразумевает ширину символа в 8 -бит, а сохранение нескольких -октетов символов UTF8 фактически использует несколько «символов» из VARCHAR? Или VARCHAR также всегда хранит 32 бита на символ? Так много возможностей.

Не то, о чем мне когда-либо приходилось так сильно беспокоиться, но я начинаю сталкиваться с -ограничениями на размер временной таблицы памяти, и я не обязательно должен увеличивать доступный пул MySQL (во второй раз ).

9
задан pospi 10 April 2012 в 00:19
поделиться