У меня есть таблица, содержащая два 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;
SELECT COUNT (*) FROM a
) 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;