Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица тестовая со структурой
CREATE TABLE IF NOT EXISTS `atest` (
`first_field` int(10) unsigned NOT NULL default '0'
) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Когда таблица пуста PMA показывает
Данные 0 Байт
Индекс 0 Байт
Всего 0 Байт
Добавляю одну строку
INSERT INTO `dateland_data`.`atest` (`first_field`) VALUES ('1');
PMA показывает
Данные 10,262.0 КБ
Индекс 0 Байт
Всего 10,262.0 КБ
Если дальше эксперементировать, то размер таблицы при увеличении срток не будет увеличиваться, до достежении определенного предела.
При увеличении строк в таблице больше этого предела, размер таблицы увеличится тоже скачком, я давно этот тест делал, кажется он станет 20 МБ или что-то такое.
1) Верно что мускул при создании Memory таблицы резервирует для нее определенный объем памяти, даже если данных реально меньше?
И все эти 10Мб реально сидят в оперативке, хотя таблица почти пуста?
2) Есть ли настройка у мускула которая влияет на этот размер резервируемой памяти под Memory таблицу?
Спасибо.
Неактивен
Почти верно. Память выделяется страницами, а внутри страниц нужно выделять
дополнительно память под внутренние структуры (например, адресацию строк
внутри таблицы). Уменьшить это значение можно, если, напрмиер, Вы знаете,
что табличка будет маленькая. Тогда можно ограничить размер адресации
(и тем самым уменьшить объем, выделяемый для хранения этих структур):
Неактивен
да, спасибо очень помогло )
такие таблицы использую для хранения горячих данных, и таблицы не большие, не больше 1000-10000 строк
при ограничених даже на порядок больше, таблицы по размеру значительно меньше выделяемых по умолчанию 10МБ, по 100Кб-500Кб
Неактивен