Spec-Zone.ru › MySQL 9.2

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.

Вы также можете увеличить размер системы табличного пространства, добавив ещё один файл данных. Для этого:

  1. Остановите сервер MySQL.

  2. Если последний файл данных в настройке innodb_data_file_path определён с атрибутом autoextend, удалите его и измените атрибут размера, чтобы он отражал текущий размер файла данных. Чтобы определить соответствующий размер файла данных, проверьте размер файла в файловой системе и округлите его вниз до ближайшего значения в МБ, где 1 МБ равен 1024 × 1024 байтам.

  3. Добавьте новый файл данных к настройке innodb_data_file_path, необязательно указывая атрибут autoextend. Атрибут autoextend может быть указан только для последнего файла данных в настройке innodb_data_file_path.

  4. Запустите сервер 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
  1. Чтобы использовать необработанное устройство для нового экземпляра сервера, сначала подготовьте конфигурационный файл, установив 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 байт.

  2. Затем впервые инициализируйте сервер с помощью --initialize или --initialize-insecure. InnoDB замечает ключевое слово raw и инициализирует новый раздел, а затем останавливает сервер.

  3. Теперь перезапустите сервер. 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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/innodb-system-tablespace.html

Spec-Zone.ru

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