Spec-Zone.ru › MariaDB

Двигатель хранения 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;

См. также

  • Производительность таблиц MEMORY
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают мнения MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API