|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
При создании varchar поля (UTF8) какой более правильный размер будет: 8 или 7, 256 или 255, 1024 или 1023? Почему возник такой вопрос. Потому что максимальный размер можно указать не 8192, а 8191, т.е. на 1 байт меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 14:21 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
X11, сколько нужно согласно бизнес-логике столько и указывай. 8191 это просо максимальный размер VARCHAR в UTF-8. Это вытекает из того что ограничение на максимальный размер строки в байтах равен 32K-2 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 14:24 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
Это я понимаю. Просто вопрос с точки зрения оптимизации, особенно, если потом будет индекс по этому полю. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 14:26 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
X11, забей на оптимизацию. Это не то место где нужно мозги ломать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 14:27 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
X11Просто вопрос с точки зрения оптимизации Чем меньше, тем лучше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 14:42 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а потом переделывать, если не хватит символов? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 14:05 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 14:37 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
X11, если длина слишком большая при сортировке может стать туго. А в плане хранения пофиг ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 15:01 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
ок, не буду заморачиваться, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 15:16 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
kdvрусские буквы (1251) - по 2 байта на символ Это как? По два байта на русскую букву - это в UTF-16 и его старом подмножестве UCS2 А DOS, DOS alt, Windows, ISO, KOI8-R - это всё однобайтовые кодировки. Тогда память экономили как могли. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 15:18 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
kdvВ utf8 в varchar(8000) у тебя влезет 4000 русских символов. с фига ли? в varchar(8000) влезет 8000 любых символов. потому что считается длина в символах, а не в байтах. если бы она считалась в байтах - то было бы varchar(32000) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 15:20 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
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к. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 15:35 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
kdvпод "1251" я имел в виду русские символы, которые соответствуют кодировке win1251. а.... ну если так, то да, конечно. Просто ты назвал кодировку 1251, а говорил о другой кодировке. Я тебе не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 16:45 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
X11а потом переделывать, если не хватит символов? Ну, если смог ни продумать головой, ни угадать - то таки да. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 17:02 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
Симонов Денисесли длина слишком большая при сортировке может стать туго. А в плане хранения пофиг Симонов Денис, вы бы хоть проверяли свои утверждения прежде чем писать. Посты из одной темы: 16433678 16434256 16464124 16468523 И про udf: 10593127 Из постов следует что влияет на расход оперативной памяти, на размер файла БД, на скорость создания индексов, на скорость работы с udf. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 17:42 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
notav, я udf стараюсь не пользоваться без острой на то необходимости. В 99% случаев хватает встроенных функций или своих PSQL функций. Скорость создания индексов это следствие замедления сортировки. Теперь про размер файла. Да немного влияет, но только потому что сжатие делается маленькими кусками (ЕМНИП 128 одинаковых символов может быть сжато в 2 байта). Но в приведённом примере ник сравнивает 1 и 32000 символов. Автор же топика играется плюс минус 1-10 символов для округления. По идее в 4.0 это (сжатие) должно быть улучшено. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 17:56 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
notavИз постов следует что влияет на расход оперативной памяти, на размер файла БД, на скорость создания индексов, на скорость работы с udf. из первых двух ссылок как раз следует, что не на размер БД влияет, а на размер temp-файла при сортировке. И это так и есть (напомню, что создание индекса - это тоже сортировка). Кроме того, читать надо не только сами цитируемые сообщения, но и комментарии к ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2017, 19:55 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
kdvnotavИз постов следует что влияет на расход оперативной памяти, на размер файла БД, на скорость создания индексов, на скорость работы с udf. из первых двух ссылок как раз следует, что не на размер БД влияет Странно. Я вижу что в первой ссылке есть тест на размер БД, прям с самого начала сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2017, 07:15 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
notav, я же вроде пояснил про сжатие. Текущий алгоритм RLE позволяет сжать максимум с компрессией 64. В тесте размер VARCHAR поля увеличили в 32K раза, а размер БД вырос только в 10. Поэтому это можно считать не существенным. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2017, 09:31 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
notav, да, про размер пропустил, но там чуть, и сразу про сортировку. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2017, 10:22 |
|
Правильный размер varchar поля для набора символов UTF8?
|
|||
---|---|---|---|
#18+
У меня было нечто похожее: 19267497 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2017, 12:18 |
|
|
start [/forum/topic.php?fid=40&msg=39537431&tid=1561381]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 164ms |
0 / 0 |