Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Если у нас есть Varchar(10) то он займет 11 байт верно?

Jery Khisvel Ученик (104), закрыт 4 года назад
Дополнен 4 года назад
Максимально если строка из 10 символов будет
Лучший ответ
Андрей Высший разум (425191) 4 года назад
Нет, не верно. В каждой СУБД способ хранения строк свой.

Если говорить про MySQL, то при использовании кодировки utf8 (позволяет хранить только символы нулевой плоскости юникода) код каждого символа хранится в 3 байтах, при использовании кодировки utf8mb4 (позволяет хранить любые символы юникода) - в 4 байтах.

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

P.S. Если же говорить про сферического коня в вакууме, то ты прав: 11 байт. 1 байт под длину строки (этого достаточно до varchar(255) включительно) и 10 байт под символы строки.
Jery KhisvelУченик (101) 4 года назад
это просто задание в котором надо расчитать максимальный размер памяти который займет тот или иной атрибут и вот там есть варчар из 10 символов
Андрей Высший разум (425191) Дописал в основной ответ: 11
Остальные ответы
Максим Искусственный Интеллект (198285) 4 года назад
Максимально 12 байт, потому что нужно ещё хранить информацию о длине строки. Минимально 2 байта.
Jery KhisvelУченик (101) 4 года назад
а почему 2 байта на длину
Максим Искусственный Интеллект (198285) Потому что varchar в теории может быть довольно длинным и превышать длину в 256 символов.
Антон Катцын Гуру (4935) 4 года назад
А как же кодировка? в utf8 может быть 4 байта на символ. А еще почему длина 2 байта? если длина ограничена 10, то и байта хватит. Это все зависит от реализации базы данных.

В каких-то ситуациях на каких-то базах Varchar(10) может быть 44 байта. (почему бы и не 4 байта на длину? 4 байта тоже распространено для целых чисел)
Jery KhisvelУченик (101) 4 года назад
в данном задании не нужно так заморачиватся. Нужно указать максимальный размер памяти для варчара из 10 символов
Jery KhisvelУченик (101) 4 года назад
я вот не пойму 12 или 11
Антон Катцын Гуру (4935) да нету ответа на этот вопрос. он не корректен. есть много факторов, которые реализацией определяются. Но прям минимальный максимальный размер - это 11. 10 на байты и 1 на размер (и то потому что 10 в байт влезает)
Привет, это Солнечный ветер Искусственный Интеллект (137944) 4 года назад
Introduction to MySQL VARCHAR data type
MySQL VARCHAR is the variable-length string whose length can be up to 65,535. MySQL stores a VARCHAR value as a 1-byte or 2-byte length prefix plus actual data.

The length prefix specifies the number of bytes in the value. If a column requires less than 255 bytes, the length prefix is 1 byte. In case the column requires more than 255 bytes, the length prefix is two length bytes.

http://www.mysqltutorial.org/mysql-varchar/
Похожие вопросы