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 x 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.