Формула для расчета MySql размера одной строки (движок MyISAM) - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть ситуация, когда мне нужно создавать таблицы динамически.В зависимости от некоторых критериев я собираюсь варьировать размер столбцов конкретной таблицы.Для этого мне нужно рассчитать размер одной строки.

Например, если я собираюсь создать следующую таблицу

CREATE TABLE sample (id int, name varchar (30));

чтобы эта формула дала мне размер одной строки для таблицы выше, учитывая все накладные расходы на хранение строки в таблице mysql.

Возможно ли это сделать и так ли этовозможно ли это сделать?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

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

Edit:

Я предлагаю идти против нормализации только , когда вы точно знаете, что делаете. СУБД создана для работы с большим количеством данных. Возможно, вам не нужно сериализовать свои структурированные данные в одно поле.

Имейте в виду, что ваш прикладной уровень затем должен токенизировать (или, что еще хуже) сериализованные полевые данные, чтобы вернуть исходное значение, которое, безусловно, требует больших затрат, чем получение данных уже в структурированной форме, из БД.

Единственное исключение, о котором я могу подумать, - это сложная клиентская архитектура, когда перемещение обработки на клиентскую сторону фактически снимает нагрузку с сервера, и вы в любом случае сериализуете наши данные ради передачи. - В коде на стороне сервера (например, php) нехорошо сохранять данные сериализированного стиля в БД.

(Тем не менее, использование встроенной сериализации php может быть хорошей идеей в некоторых случаях. Ваш текущий проект, похоже, не выиграет от этого.)

0 голосов
/ 11 апреля 2011

VARCHAR - это тип данных переменной длины, он имеет свойство length, но значение может быть пустым;расчет может быть не точным.Взгляните на поле 'Avg_row_length' в information_schema. tables.

...