Размер строки InnoDB большой по сравнению с MyIsam

У меня есть таблица с столбцами, smallint, целым числом и двумя числами с плавающей запятой. Ожидаемая память для каждой строки составляет 14 байтов (2 + 4 + 2 * 4). В моей таблице около 700 000 строк. Я не установил первичных ключей и индексов. В то время как тип MyIsam занимает около 10 МБ (в среднем 15 МБ для каждой строки), тип InnoDB занимает более 30 МБ (в среднем 44 ГБ). Что мне здесь не хватает? Будет ли у InnoDB так много накладных расходов для каждой строки, или номеру статуса таблицы нельзя доверять. Мне нужно хранить данные, которые будут работать в ГБ, поэтому нужно выбрать тип хранилища, взвесив различные параметры.


person Grungean    schedule 25.09.2010    source источник


Ответы (1)


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

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

person Hammerite    schedule 25.09.2010
comment
Да, это отвечает на мой вопрос вместе с этим stackoverflow.com/ questions / 2914492 / - person Grungean; 26.09.2010