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 имеет хорошую информацию о текущем размере индекса (ов) на диске.)

Другие вопросы по тегам