17.6.3.1 Система табличного пространства
Система табличного пространства — это область хранения буфера изменений. В ней также могут храниться данные таблиц и индексов, если таблицы создаются в системе табличного пространства, а не в файлах на таблицу или общих табличных пространствах.
Система табличного пространства может иметь один или несколько файлов данных. По умолчанию создаётся один файл данных системы табличного пространства, названный ibdata1, в каталоге данных. Размер и количество файлов данных системы табличного пространства определяется параметром запуска innodb_data_file_path. Сведения о настройке см. в разделе Настройка файла данных системы табличного пространства.
Дополнительную информацию о системе табличного пространства см. в следующих разделах данного раздела:
Изменение размера системы табличного пространства
В этом разделе описано, как увеличить или уменьшить размер системы табличного пространства.
Увеличение размера системы табличного пространства
Самый простой способ увеличить размер системы табличного пространства — настроить его на автоматическое расширение. Для этого укажите атрибут autoextend для последнего файла данных в настройке innodb_data_file_path и перезапустите сервер. Например:
innodb_data_file_path=ibdata1:10M:autoextend
При указании атрибута autoextend размер файла данных автоматически увеличивается на 8 МБ при необходимости. Размер приращения управляется переменной innodb_autoextend_increment.
Вы также можете увеличить размер системы табличного пространства, добавив ещё один файл данных. Для этого:
Остановите сервер MySQL.
Если последний файл данных в настройке
innodb_data_file_pathопределён с атрибутомautoextend, удалите его и измените атрибут размера, чтобы он отражал текущий размер файла данных. Чтобы определить соответствующий размер файла данных, проверьте размер файла в файловой системе и округлите его вниз до ближайшего значения в МБ, где 1 МБ равен 1024 × 1024 байтам.Добавьте новый файл данных к настройке
innodb_data_file_path, необязательно указывая атрибутautoextend. Атрибутautoextendможет быть указан только для последнего файла данных в настройкеinnodb_data_file_path.Запустите сервер MySQL.
Например, у этого табличного пространства есть один файл данных с автоматическим расширением:
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:10M:autoextend
Предположим, что со временем файл данных вырос до 988 МБ. Это значение настройки innodb_data_file_path после изменения атрибута размера для отражения текущего размера файла данных и после указания нового файла данных с автоматическим расширением на 50 МБ:
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
При добавлении нового файла данных не указывайте существующее имя файла. InnoDB создаёт и инициализирует новый файл данных при запуске сервера.
Невозможно увеличить размер существующего файла данных системы табличного пространства, изменив его атрибут размера. Например, изменение настройки innodb_data_file_path с ibdata1:10M:autoextend на ibdata1:12M:autoextend приводит к следующей ошибке при запуске сервера:
[ERROR] [MY-012263] [InnoDB] The Auto-extending innodb_system
data file './ibdata1' is of a different size 640 pages (rounded down to MB) than
specified in the .cnf file: initial 768 pages, max 0 (relevant if non-zero) pages!
Ошибка указывает на то, что текущий размер файла данных (выраженный в InnoDB страницах) отличается от размера файла данных, указанного в конфигурационном файле. При возникновении этой ошибки восстановите предыдущее значение настройки innodb_data_file_path и следуйте инструкциям по изменению размера системы табличного пространства.
Уменьшение размера системы табличного пространства InnoDB
Уменьшение размера существующей системы табличного пространства не поддерживается. Единственный способ получить меньшее табличное пространство — восстановить данные из резервной копии в новый экземпляр MySQL, созданный с конфигурацией размера табличного пространства по вашему желанию.
Дополнительную информацию о создании резервных копий см. в разделе Раздел 17.18.1, «Резервное копирование InnoDB».
Сведения о настройке файлов данных для новой системы табличного пространства см. в разделе Настройка файла данных системы табличного пространства.
Чтобы избежать создания большого системы табличного пространства, рассмотрите использование табличных пространств на файл на таблицу или общих табличных пространств для ваших данных. Табличные пространства на файл на таблицу являются типом табличного пространства по умолчанию и используются неявно при создании таблицы InnoDB. В отличие от системы табличного пространства, табличные пространства на файл на таблицу возвращают место на диске операционной системе при обрезке или удалении. Дополнительную информацию см. в разделе Раздел 17.6.3.2, «Табличные пространства на файл на таблицу». Общие табличные пространства — это многотабличные табличные пространства, которые также могут использоваться как альтернатива системе табличного пространства. См. раздел Раздел 17.6.3.3, «Общие табличные пространства».
Использование необработанных разделов диска для системы табличного пространства
Необработанные разделы диска могут использоваться в качестве файлов данных системы табличного пространства. Данный метод позволяет использовать небуферизованный ввод/вывод на Windows и некоторых системах Linux и Unix без накладных расходов файловой системы. Проведите тесты с необработанными разделами и без них, чтобы проверить, улучшают ли они производительность вашей системы.
При использовании необработанного раздела диска убедитесь, что идентификатор пользователя, под которым работает сервер MySQL, имеет права чтения и записи для этого раздела. Например, если сервер работает от пользователя mysql, раздел должен быть читаемым и записываемым для mysql. Если сервер запускается с параметром --memlock, сервер должен запускаться под пользователем root, поэтому раздел должен быть читаемым и записываемым для root.
В описанных ниже процедурах требуется изменение файла параметров. Дополнительную информацию см. в разделе Раздел 6.2.2.2, «Использование файлов параметров».
Назначение необработанного раздела диска в системах Linux и Unix
-
Чтобы использовать необработанное устройство для нового экземпляра сервера, сначала подготовьте конфигурационный файл, установив
innodb_data_file_pathс ключевым словомraw. Например:[mysqld] innodb_data_home_dir= innodb_data_file_path=/dev/hdd1:3Graw;/dev/hdd2:2Graw
Размер раздела должен быть по меньшей мере таким же, как вы указали. Обратите внимание, что 1 МБ в
InnoDBсоставляет 1024 × 1024 байта, в то время как 1 МБ в спецификациях диска обычно означает 1 000 000 байт. Затем впервые инициализируйте сервер с помощью
--initializeили--initialize-insecure. InnoDB замечает ключевое словоrawи инициализирует новый раздел, а затем останавливает сервер.Теперь перезапустите сервер.
InnoDBтеперь разрешает внесение изменений.
Назначение необработанного раздела диска в Windows
В системах Windows те же шаги и соответствующие рекомендации, что и для систем Linux и Unix, за исключением того, что настройка innodb_data_file_path немного отличается в Windows. Например:
[mysqld]
innodb_data_home_dir=
innodb_data_file_path=//./D::10Graw
//./ соответствует синтаксису Windows \\.\ для доступа к физическим дискам. В примере выше, D: — это буква диска раздела.
© 2025 Oracle
Licensed under the GPLv2 License.