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

15.6.3.5临时表空间

InnoDB使用会话临时表空间和全局临时表空间。

会议临时表空间

会话临时表空间存储用户创建的临时表和优化器创建的内部临时表InnoDB配置为磁盘上的内部临时表的存储引擎。从MySQL 8.0.16开始,用于磁盘上内部临时表的存储引擎是InnoDB.(以前,存储引擎由的值决定internal_tmp_disk_storage_engine.)

在创建磁盘上临时表的第一个请求时,将从临时表空间池中将会话临时表空间分配给会话。一个会话最多分配两个表空间,一个用于用户创建的临时表,另一个用于优化器创建的内部临时表。分配给会话的临时表空间用于该会话创建的所有磁盘上的临时表。当会话断开时,它的临时表空间将被截断并释放回池中。服务器启动时会创建一个包含10个临时表空间的池。池的大小永远不会缩小,并且根据需要自动向池中添加表空间。在正常关闭或中止初始化时,将删除临时表空间池。会话临时表空间文件在创建时大小为5页,具有一个.ibt文件扩展名。

为会话临时表空间保留了40万个空间id。由于会话临时表空间池是在每次服务器启动时重新创建的,所以当服务器关闭时,会话临时表空间的空间id不会被持久化,可能会被重用。

innodb_temp_tablespaces_dir变量定义创建会话临时表空间的位置。默认的位置是# innodb_temp目录中的数据目录。如果无法创建临时表空间池,则拒绝启动。

壳> cdBASEDIR/data/#innodb_temp shell> ls temp_10. txtibt temp_2。ibt temp_4。ibt temp_6。ibt temp_8。ibt temp_1。ibt temp_3。ibt temp_5。ibt temp_7。ibt temp_9.ibt

在基于语句的复制(SBR)模式中,在副本上创建的临时表位于单个会话临时表空间中,只有在MySQL服务器关闭时,该表空间才会被截断。

INNODB_SESSION_TEMP_TABLESPACESTable提供关于会话临时表空间的元数据。

INFORMATION_SCHEMA。INNODB_TEMP_TABLE_INFO控件中活动的用户创建的临时表的元数据InnoDB实例。

全局临时表空间

全局临时表空间(ibtmp1)存储对用户创建的临时表所做更改的回滚段。

innodb_temp_data_file_path变量定义全局临时表空间数据文件的相对路径、名称、大小和属性。如果没有指定值innodb_temp_data_file_path,默认行为是创建一个名为ibtmp1innodb_data_home_dir目录中。初始文件大小略大于12MB。

全局临时表空间在正常关闭或中止初始化时被删除,并在每次服务器启动时重新创建。全局临时表空间在创建时接收动态生成的空间ID。如果无法创建全局临时表空间,则拒绝启动。如果服务器意外停止,全局临时表空间不会被删除。在这种情况下,数据库管理员可以手动删除全局临时表空间或重启MySQL服务器。重新启动MySQL服务器会自动删除并重新创建全局临时表空间。

全局临时表空间不能驻留在原始设备上。

INFORMATION_SCHEMA。文件提供全局临时表空间的元数据。发出一个类似的查询来查看全局临时表空间元数据:

SELECT * FROM INFORMATION_SCHEMA。文件WHERE TABLESPACE_NAME='innodb_temporary'\G

默认情况下,全局临时表空间数据文件是自动扩展的,并根据需要增加大小。

若要确定全局临时表空间数据文件是否在自动扩展,请检查innodb_temp_data_file_path设置:

mysql >选择@@innodb_temp_data_file_path;+------------------------------+ | @@ innodb_temp_data_file_path  | +------------------------------+ | ibtmp1:12M: autoextend  | +------------------------------+

查询全局临时表空间数据文件大小INFORMATION_SCHEMA。文件表使用类似于下面的查询:

SELECT FILE_NAME, TABLESPACE_NAME, ENGINE, INITIAL_SIZE, TOTAL_EXTENTS*EXTENT_SIZE AS TotalSizeBytes, DATA_FREE, MAXIMUM_SIZE FROM INFORMATION_SCHEMA。文件TABLESPACE_NAME = ' innodb_temporary ' \ G  *************************** 1。row *************************** FILE_NAME: ./ibtmp1 TABLESPACE_NAME: innodb_temporary ENGINE: InnoDB INITIAL_SIZE: 12582912 TotalSizeBytes: 12582912 DATA_FREE: 6291456 MAXIMUM_SIZE: NULL

TotalSizeBytes显示全局临时表空间数据文件的当前大小。有关其他字段值的信息,请参见第26.3.15节“INFORMATION_SCHEMA文件表”

或者,在您的操作系统上检查全局临时表空间数据文件大小。控件定义的目录中包含全局临时表空间数据文件innodb_temp_data_file_path变量。

要回收被全局临时表空间数据文件占用的磁盘空间,需要重新启动MySQL服务器。方法定义的属性删除并重新创建全局临时表空间数据文件innodb_temp_data_file_path

如果需要限制全局临时表空间数据文件的大小,请配置innodb_temp_data_file_path指定最大文件大小。例如:

(mysqld) innodb_temp_data_file_path = ibtmp1:12M: autoextend:马克斯:500米

配置innodb_temp_data_file_path需要重新启动服务器。