Накладные расходы на использование диска InnoDB

У меня есть таблица, содержащая два 32-битных целых числа. Эти два целых числа используются для создания кластеризованных index. SQL для создания таблицы выглядит следующим образом:

CREATE TABLE `a` (
  `var1` int(10) unsigned NOT NULL,
  `var2` int(10) unsigned NOT NULL,
  PRIMARY KEY (`var2`,`var1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  • В этой таблице 6921338 строк (получено с помощью SELECT COUNT (*) FROM a )
  • Таблица использует 358580224 байта пространства (получено с помощью SHOW TABLE STATUS )

Согласно моим расчетам, каждая строка использует 51,8 байта. Я знаю, что InnoDB имеет накладные расходы, а хранит строки . Однако, используя MySQL веб-сайта, я рассчитал, что размер строки должен быть 26 байтов (5 байтов заголовок, 8 байтов для целых чисел, 6 байтов идентификатора транзакции и 7 байтов поля указателя прокрутки).

Я пытаюсь уменьшить размер строки, потому что таблица может быть заполнено до 160 миллиардов записей.

Чего мне не хватает в моих расчетах? Как оптимизировать таблицу, чтобы использовать меньше места? Или мне следует переключиться на другой ядро базы данных ent?

Обновление

Запросы, которые я делаю для этой таблицы;

INSERT INTO a(var1,var2) VALUES(INTEGER,INTEGER),(INTEGER,INTEGER),...,(INTEGER,INTEGER);
SELECT var1 FROM a WHERE var2=INTEGER;
DELETE FROM a WHERE var2=INTEGER;

5
задан Utku Zihnioglu 29 July 2011 в 17:58
поделиться