powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Правильный размер varchar поля для набора символов UTF8?
21 сообщений из 21, страница 1 из 1
Правильный размер varchar поля для набора символов UTF8?
    #39534709
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При создании varchar поля (UTF8) какой более правильный размер будет: 8 или 7, 256 или 255, 1024 или 1023?
Почему возник такой вопрос. Потому что максимальный размер можно указать не 8192, а 8191, т.е. на 1 байт меньше.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39534715
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

сколько нужно согласно бизнес-логике столько и указывай.
8191 это просо максимальный размер VARCHAR в UTF-8. Это вытекает из того что ограничение на максимальный размер строки в байтах равен 32K-2
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39534717
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это я понимаю.
Просто вопрос с точки зрения оптимизации, особенно, если потом будет индекс по этому полю.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39534719
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

забей на оптимизацию. Это не то место где нужно мозги ломать
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39534730
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Просто вопрос с точки зрения оптимизации

Чем меньше, тем лучше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39536874
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, а потом переделывать, если не хватит символов?
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39536897
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Просто вопрос с точки зрения оптимизации
что? длина char и varchar - это ограничение на максимальное количество символов. На диске хранится ровно столько, сколько записано в поле. Записал туда 'X11', - значит там будет 3 символа, а не столько, сколько ты определил длину varchar.
X11256 или 255, 1024 или 1023?
кошмар какой. Пиши 250, 300, 1000, или 8000 - пофиг.
X11а потом переделывать, если не хватит символов?
utf8, собственно, имеет переменную длину символов. От 1 до 4 байт. Латинский алфавит - по 1 байту на символ. русские буквы (1251) - по 2 байта на символ. В utf8 в varchar(8000) у тебя влезет 4000 русских символов.
Если не хватит, переделаешь на blob.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39536920
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

если длина слишком большая при сортировке может стать туго. А в плане хранения пофиг
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39536925
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок, не буду заморачиваться, спасибо
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39536928
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvрусские буквы (1251) - по 2 байта на символ

Это как?

По два байта на русскую букву - это в UTF-16 и его старом подмножестве UCS2

А DOS, DOS alt, Windows, ISO, KOI8-R - это всё однобайтовые кодировки.
Тогда память экономили как могли.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39536930
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvВ utf8 в varchar(8000) у тебя влезет 4000 русских символов.

с фига ли?

в varchar(8000) влезет 8000 любых символов.
потому что считается длина в символах, а не в байтах.
если бы она считалась в байтах - то было бы varchar(32000)
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39536944
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochЭто как?
это вот так. Национальные символы в юникоде обычно занимают как минимум по 2 байта. Иначе они бы не влезли все в юникодовую таблицу.
читаем
http://www.ibase.ru/unicode_faq/
"А говорят, что в Unicode строки занимают больше места?"

под "1251" я имел в виду русские символы, которые соответствуют кодировке win1251. В юникоде они по 2 байта, см. выше.

В качестве примера приводить однобайтовые кодировки 866, win1251, и прочие - просто смешно.
https://ru.wikipedia.org/wiki/Кириллица_в_Юникоде

AriochПо два байта на русскую букву - это в UTF-16 и его старом подмножестве UCS2
да пофиг. Нац-символы в юникоде все равно многобайтовые. И по идее, имеют одно и то же значение в любом юникодном варианте.
uft8 хорош лишь тем, то в нем размер символа в байтах не фиксированный, а от 1 до 4 байт.

Ariochв varchar(8000) влезет 8000 любых символов.
потому что считается длина в символах, а не в байтах.
тут я лажанул, да. Проблема с 32768 однобайтовых и 8192 в юникоде в том, что для юникода считается по 4 байта на символ. Ограничение только отсюда.
В varchar(8192) character set utf8 влезет, конечно, 8192 русских буквы. Но занимать они будут 16к, а не 32к.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39536993
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvпод "1251" я имел в виду русские символы, которые соответствуют кодировке win1251.

а....
ну если так, то да, конечно.

Просто ты назвал кодировку 1251, а говорил о другой кодировке.
Я тебе не понял
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39537020
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11а потом переделывать, если не хватит символов?

Ну, если смог ни продумать головой, ни угадать - то таки да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39537038
notav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисесли длина слишком большая при сортировке может стать туго. А в плане хранения пофиг
Симонов Денис, вы бы хоть проверяли свои утверждения прежде чем писать.

Посты из одной темы: 16433678 16434256 16464124 16468523
И про udf: 10593127

Из постов следует что влияет на расход оперативной памяти, на размер файла БД, на скорость создания индексов, на скорость работы с udf.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39537044
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
notav,

я udf стараюсь не пользоваться без острой на то необходимости. В 99% случаев хватает встроенных функций или своих PSQL функций. Скорость создания индексов это следствие замедления сортировки.
Теперь про размер файла. Да немного влияет, но только потому что сжатие делается маленькими кусками (ЕМНИП 128 одинаковых символов может быть сжато в 2 байта). Но в приведённом примере ник сравнивает 1 и 32000 символов. Автор же топика играется плюс минус 1-10 символов для округления. По идее в 4.0 это (сжатие) должно быть улучшено.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39537078
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
notavИз постов следует что влияет на расход оперативной памяти, на размер файла БД, на скорость создания индексов, на скорость работы с udf.
из первых двух ссылок как раз следует, что не на размер БД влияет, а на размер temp-файла при сортировке. И это так и есть (напомню, что создание индекса - это тоже сортировка).
Кроме того, читать надо не только сами цитируемые сообщения, но и комментарии к ним.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39537173
notav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvnotavИз постов следует что влияет на расход оперативной памяти, на размер файла БД, на скорость создания индексов, на скорость работы с udf.
из первых двух ссылок как раз следует, что не на размер БД влияет
Странно. Я вижу что в первой ссылке есть тест на размер БД, прям с самого начала сообщения.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39537233
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
notav,

я же вроде пояснил про сжатие. Текущий алгоритм RLE позволяет сжать максимум с компрессией 64. В тесте размер VARCHAR поля увеличили в 32K раза, а размер БД вырос только в 10. Поэтому это можно считать не существенным.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39537294
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
notav,

да, про размер пропустил, но там чуть, и сразу про сортировку.
...
Рейтинг: 0 / 0
Правильный размер varchar поля для набора символов UTF8?
    #39537431
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня было нечто похожее: 19267497
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Правильный размер varchar поля для набора символов UTF8?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]