10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.3 kb
手册页(Zip)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

15.6.3.1 System表空间

系统表空间是变更缓冲区的存储区域。如果表是在系统表空间中创建的,而不是在每个表文件或一般表空间中创建的,那么它也可以包含表和索引数据。在以前的MySQL版本中,system表空间包含InnoDB数据字典。在MySQL 8.0中,InnoDB在MySQL数据字典中存储元数据。看到第14章,MySQL数据字典.在以前的MySQL版本中,系统表空间也包含doublewrite缓冲区存储区域。从MySQL 8.0.20开始,这个存储区域位于单独的doublewrite文件中。看到第15.6.4节,“双写缓冲区”

系统表空间可以有一个或多个数据文件。默认情况下,单个系统表空间数据文件,命名为ibdata1,在data目录下创建。方法定义系统表空间数据文件的大小和数量innodb_data_file_path启动选项。有关配置信息,请参见“系统表空间数据文件配置”

关于系统表空间的其他信息在本节的以下主题中提供:

调整系统表空间大小

介绍如何增加或减少system表空间的大小。

增加系统表空间的大小

增加系统表空间大小的最简单方法是将其配置为自动扩展。要做到这一点,请指定autoextend属性中的最后一个数据文件innodb_data_file_path设置后,重新启动服务器。例如:

innodb_data_file_path = ibdata1:10M: autoextend

autoextend如果指定了属性,则数据文件会自动增加8MB的大小。的innodb_autoextend_increment变量控制增量大小。

您还可以通过添加另一个数据文件来增加系统表空间大小。这样做:

  1. 停止MySQL服务器。

  2. 中的最后一个数据文件innodb_data_file_path属性定义autoextend属性,删除它,并修改size属性以反映当前数据文件的大小。要确定要指定的适当数据文件大小,请检查文件系统的文件大小,并将该值四舍五入到最接近的MB值,其中MB等于1024 x 1024字节。

  3. 控件中追加一个新数据文件innodb_data_file_path设置,可选地指定autoextend属性。的autoextend属性中的最后一个数据文件innodb_data_file_path设置。

  4. 启动MySQL服务器。

例如,这个表空间有一个自动扩展的数据文件:

innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata: 10m:autoextend

假设数据文件随着时间的推移增长到988MB。这是innodb_data_file_path在修改size属性以反映当前数据文件大小,并指定一个新的50MB自动扩展数据文件之后设置:

innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata: 988m

添加新的数据文件时,不要指定已存在的文件名。InnoDB在启动服务器时创建并初始化新数据文件。

请注意

不能通过更改现有系统表空间数据文件的size属性来增加其大小。例如,更改innodb_data_file_path设置从ibdata1:10M: autoextendibdata1:12M: autoextend启动服务器时产生以下错误:

[ERROR] [MY-012263] [InnoDB]自动扩展innodb_system数据文件'。/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!

该错误指示现有数据文件大小(以InnoDBPages)与配置文件中指定的数据文件大小不同。如果遇到此错误,请恢复之前的错误innodb_data_file_path设置时,请参考系统表空间大小调整说明。

减少InnoDB系统表空间大小

不支持缩小已有系统表空间大小。实现更小的系统表空间的唯一选择是将数据从备份恢复到使用所需的系统表空间大小配置创建的新MySQL实例。

有关创建备份的信息,请参见章节15.18.1,“InnoDB备份”

有关为新的系统表空间配置数据文件的信息。看到“系统表空间数据文件配置”

为了避免使用大的系统表空间,可以考虑为数据使用文件-表空间或通用表空间。表文件表空间是默认的表空间类型,在创建表空间时隐式使用InnoDB表格与系统表空间不同,每个表文件的表空间在被截断或删除时将磁盘空间返回给操作系统。有关更多信息,请参见第15.6.3.2节,“每个表空间文件”.通用表空间是多表空间,也可以作为系统表空间的替代。看到15.6.3.3节“通用表空间”

系统表空间使用裸盘分区

裸盘分区可作为系统表空间数据文件使用。这种技术可以在Windows和一些Linux和Unix系统上实现无缓冲的I/O,而不需要文件系统开销。使用或不使用原始分区执行测试,以验证它们是否可以提高系统性能。

当使用裸磁盘分区时,确保运行MySQL服务器的用户ID对该分区具有读写权限。例如,如果将服务器作为mysql用户,分区必须是可读可写的mysql.如果使用——memlock选项,则服务器必须以,因此分区必须是可读可写的

下面描述的过程涉及选项文件修改。有关其他信息,请参见第4.2.2.2节“使用选项文件”

Linux和Unix系统下分配裸磁盘分区
  1. 创建新的数据文件时,请指定关键字newraw之后立即为数据文件大小innodb_data_file_path选择。分区必须至少与指定的大小相同。注意1MBInnoDB为1024 × 1024字节,而磁盘规格中的1MB通常意味着1,000,000字节。

    [mysqld] innodb_data_home_dir= innodb_data_file_path=/dev/hdd1:3Gnewraw
  2. 重新启动服务器。InnoDB注意到newraw关键字并初始化新分区。但是,不要创建或更改任何InnoDB表。否则,下次重新启动服务器时,InnoDB重新初始化分区,您的更改将丢失。(作为安全措施InnoDB防止用户修改数据时,任何分区newraw指定)。

  3. InnoDB已初始化新分区,停止服务器,更改newraw在数据文件规范中

    [mysqld] innodb_data_home_dir= innodb_data_file_path=/dev/hdd1:3Graw
  4. 重新启动服务器。InnoDB现在允许进行更改。

Windows操作系统下分配裸磁盘分区

在Windows系统上,适用于Linux和Unix系统的相同步骤和附带指南innodb_data_file_pathWindows上的设置略有不同。

  1. 创建新的数据文件时,请指定关键字newraw之后立即为数据文件大小innodb_data_file_path选择:

    [mysqld] innodb_data_home_dir= innodb_data_file_path=//./D::10Gnewraw ./ /

    / /。对应的Windows语法\ \ \。用于访问物理驱动器。在上面的例子中,D:分区的盘符。

  2. 重新启动服务器。InnoDB注意到newraw关键字并初始化新分区。

  3. InnoDB已初始化新分区,停止服务器,更改newraw在数据文件规范中

    [mysqld] innodb_data_home_dir= innodb_data_file_path=//./D::10Graw . [mysqld] innodb_data_home_dir= innodb_data_file_path=//
  4. 重新启动服务器。InnoDB现在允许进行更改。