Двигатель хранения MEMORY
Содержимое движка хранения MEMORY (ранее известного как HEAP) хранится в оперативной памяти, а не на диске.
Он лучше всего подходит для кэширования данных из других таблиц только для чтения или для временных рабочих областей.
Поскольку данные хранятся в оперативной памяти, они очень уязвимы к отключению питания или отказу оборудования и не подходят для постоянного хранения данных. Фактически, после перезапуска сервера таблицы MEMORY будут пересозданы (потому что файл определения хранится на диске), но они будут пустыми. Их можно повторно заполнить с помощью запроса, используя опцию запуска сервера --init-file.
Типы переменной длины, такие как VARCHAR, могут использоваться в таблицах MEMORY. Столбцы BLOB или TEXT не поддерживаются для таблиц MEMORY.
Использование памяти
Максимальный общий размер таблиц MEMORY не может превышать системную переменную сервера max_heap_table_size. При создании таблицы это значение применяется к этой таблице, а при перезапуске сервера это значение применяется к существующим таблицам. Изменение этого значения не влияет на существующие таблицы. Однако выполнение оператора ALTER TABLE ... ENGINE=MEMORY применяет текущее значение max_heap_table_size к таблице. Кроме того, можно изменить сеансовое значение max_heap_table_size перед созданием таблицы, чтобы убедиться, что таблицы, созданные другими сеансами, не пострадали.
Параметр таблицы MAX_ROWS предоставляет подсказку о количестве строк, которые вы планируете хранить в них. Это не жёсткое ограничение, которое нельзя превысить, и оно не позволяет превысить max_heap_table_size. Двигатель хранения использует max_heap_table_size и MAX_ROWS для расчета максимального объёма памяти, который может быть выделен для таблицы.
Выделенная для таблицы MEMORY память освобождается при выполнении DROP TABLE или TRUNCATE TABLE, или при перестроении с помощью ALTER TABLE tbl_name ENGINE = MEMORY. При удалении строк место не освобождается автоматически.
Тип индекса
Двигатель хранения MEMORY допускает, чтобы индексы были либо B-деревом, либо хэш-индексом. Хэш-индекс — это тип по умолчанию для MEMORY. Подробнее об их характеристиках см. в разделе Типы индексов для двигателей хранения.
Таблица MEMORY может иметь до 64 индексов, 16 столбцов для каждого индекса и максимальную длину ключа 3072 байта.
Репликация
Таблицы MEMORY теряются при перезапуске сервера. Для достижения этого результата в репликации, в первый раз, когда первичный сервер использует таблицу MEMORY после перезапуска, он записывает оператор DELETE для этой таблицы в двоичный журнал, чтобы реплики также очистились.
Пример
В следующем примере показано, как создать таблицу MEMORY с заданным максимальным размером, как описано выше.
SET max_heap_table_size = 1024*516; CREATE TABLE t (a VARCHAR(10), b INT) ENGINE = MEMORY; SET max_heap_table_size = @@max_heap_table_size;
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/memory-storage-engine/