MySQL вычисляет объем оперативной памяти B+Tree для одной таблицы (сравнение с структурой данных Python)
У меня есть следующие данные, которые я сейчас кеширую в Python:
id timestamp data-string
Размер строки данных составляет ~87 байт. Для оптимального хранения этого кода в python (с использованием dict и временной меткой, предварительно добавленной к строке данных с разделителем), стоимость ОЗУ для каждой записи составляет ~198 байт. Это достаточно большой размер кеша, который мне нужен.
Я хотел бы попробовать сохранить то же самое в таблице MySQL, чтобы посмотреть, смогу ли я сэкономить на оперативной памяти. При этом я сохраняю это как:
id timestamp data-string
4B 4B
<---- PK ---->
Я понимаю, что MySQL загрузит индекс таблицы InnoDB (это то, что у меня сейчас) в оперативную память. Следовательно, идентификатор (уникальный), отметка времени и указатель на строку данных будут находиться в оперативной памяти.
Как рассчитать полное использование ОЗУ (т.е. включая метаданные) для B+Tree MySQL только для этой новой таблицы?
1 ответ
Переменных, отступов и т. Д. Так много, что нецелесообразно оценивать, сколько дискового пространства будет использовать InnoDB BTree. 2x вы цитируете довольно хорошо. Buffer_pool - это кэш в ОЗУ, поэтому нельзя сказать, что BTree будет занимать столько же места в ОЗУ, сколько и диск. Кэширование на блоках по 16 КБ.
(@ ec5 имеет хорошую информацию о текущем размере индекса (ов) на диске.)