Временные табличные пространства InnoDB
Использование временных табличных пространств InnoDB было введено в MariaDB 10.2. В более ранних версиях временные табличные пространства существовали как часть табличного пространства InnoDB системы или представляли собой файлы на таблицу в зависимости от конфигурации переменной системы innodb_file_per_table.
Когда пользователь создает временную таблицу с помощью инструкции CREATE TEMPORARY TABLE и движок устанавливается как InnoDB, MariaDB создает временный файл табличного пространства. Если таблица не сжата, MariaDB записывает данные во общее временное табличное пространство, как определено переменной системы innodb_temp_data_file_path. MariaDB не разрешает создание временных таблиц с ROW_FORMAT=COMPRESSED. Все временные таблицы будут несжатыми. MariaDB удаляет временные табличные пространства при нормальном завершении работы сервера и пересоздаёт их при повторном запуске. Они не могут быть размещены на необработанном устройстве.
Внутренние временные табличные пространства (то есть временные таблицы, которые не могут храниться в памяти) используют либо Aria, либо MyISAM в зависимости от переменной системы aria_used_for_temp_tables. Вы можете установить движок по умолчанию для создаваемых пользователем временных таблиц с помощью переменной системы default_tmp_storage_engine.
Настройка размера временных табличных пространств
Для настройки размера временных табличных пространств используйте переменную системы innodb_temp_data_file_path. Эту переменную можно указать как аргумент командной строки для mysqld или в соответствующей группе параметров сервера в файле параметров групп параметров в файле параметров. Например:
[mariadb] ... innodb_temp_data_file_path=ibtmp1:32M:autoextend
Синтаксис этой переменной такой же, как у переменной innodb_data_file_path. То есть имя файла, размер и опции. По умолчанию создается файл размером 12 МБ с автоматическим расширением в ibtmp1 в каталоге данных.
Чтобы увеличить размер временного табличного пространства, можно добавить путь к дополнительному файлу табличного пространства в значение переменной системы innodb_temp_data_file_path. Предоставление дополнительных путей позволяет распределять временное табличное пространство между несколькими файлами табличного пространства. Последний файл может иметь атрибут autoextend, что гарантирует, что у вас не закончится место. Например:
[mariadb] ... innodb_temp_data_file_path=ibtmp1:32M;ibtmp2:32M:autoextend
В отличие от обычных табличных пространств, временные табличные пространства удаляются при остановке MariaDB. Чтобы уменьшить временные табличные пространства до минимального размера, перезапустите сервер.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/innodb-temporary-tablespaces/