首页 > 数据库 >MySQL的临时表空间

MySQL的临时表空间

时间:2024-10-30 11:22:06浏览次数:1  
标签:temp 临时 会话 innodb MySQL 空间 全局

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

会话临时表空间

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

 

会话临时表空间是在首次请求创建磁盘上临时表时从临时表空间池中分配给会话的。一个会话最多可分配两个表空间,一个用于用户创建的临时表,另一个用于优化器创建的内部临时表。分配给会话的临时表空间用于会话创建的所有磁盘上临时表。当会话断开连接时,其临时表空间会被截断并释放回池中。服务器启动时会创建一个包含 10 个临时表空间的池。表空间池的大小永远不会缩减,表空间会根据需要自动添加到表空间池中。正常关机或初始化失败时,临时表空间池会被移除。会话临时表空间文件在创建时大小为 5 个页,文件扩展名为.ibt。

 

会话临时表空间预留了 40 万个空间 ID。由于会话临时表空间池在服务器每次启动时都会重新创建,因此会话临时表空间的空间 ID 在服务器关闭时不会被持久化,可以重复使用。

 

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

$> cd BASEDIR/data/#innodb_temp
$> ls
temp_10.ibt  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_TABLESPACES表提供了有关会话临时表空间的元数据。

 

Information Schema中的INNODB_TEMP_TABLE_INFO表提供有关InnoDB实例中活动的用户创建的临时表的元数据。

 

全局临时表空间

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

 

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

 

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

 

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

 

Information Schema的FILES表提供有关全局临时表空间的元数据。请执行类似下面的查询来查看全局临时表空间元数据:

mysql> SELECT * FROM INFORMATION_SCHEMA.FILES WHERE TABLESPACE_NAME='innodb_temporary'\G

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

 

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

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

要检查全局临时表空间数据文件的大小,请使用类似下面的查询检查 Information Schema的FILES表:

mysql> SELECT FILE_NAME, TABLESPACE_NAME, ENGINE, INITIAL_SIZE, TOTAL_EXTENTS*EXTENT_SIZE
       AS TotalSizeBytes, DATA_FREE, MAXIMUM_SIZE FROM INFORMATION_SCHEMA.FILES
       WHERE 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显示全局临时表空间数据文件的当前大小。

 

或者,检查操作系统上的全局临时表空间数据文件大小。全局临时表空间数据文件位于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:max:500M

配置innodb_temp_data_file_path需要重启服务器。

标签:temp,临时,会话,innodb,MySQL,空间,全局
From: https://www.cnblogs.com/abclife/p/18492483

相关文章

  • windows下Mysql8.0.12安装详解
    MySQL的安装过程还是比较繁琐,为了以后安装节约时间,将其详细安装过程总结如下:1>下载对应版本下载地址:https://dev.mysql.com/downloads/mysql/2>将下载的.zip文件解压到需要安装的目录下,在该目录下创建一个名为data的空文件夹和一个my.ini文件3>配置初始化的my.ini文件......
  • C#学习 [类型系统] 命名空间(12)
    作用1.组织类System.Console.WriteLine("HelloWorld!");System是一个命名空间,Console是该命名空间中的一个类。可使用using关键字,这样就不必使用完整的名称。usingSystem;Console.WriteLine("HelloWorld!");控制类和方法名称的范围namespaceSampleNamespace;......
  • 连接云虚拟主机中MySQL数据库时出现“Too many connections”报错信息
    在使用云虚拟主机过程中,当尝试连接MySQL数据库时,可能会遇到以下错误信息:  CannotconnecttoMySQLserverError:Toomanyconnections这表示MySQL数据库服务器当前的连接数已经达到了最大限制,无法处理更多的连接请求。可能原因应用程序未及时释放连接:应用程序在......
  • 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现七
    一、前言介绍:1.1项目摘要随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势。古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力。然而,在现代社会中,由于生活节奏的加快和信息获取方式的多样化,古诗词的传播和阅读面临着一定的挑......
  • 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现八
    一、前言介绍:1.1项目摘要随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势。古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力。然而,在现代社会中,由于生活节奏的加快和信息获取方式的多样化,古诗词的传播和阅读面临着一定的挑......
  • 基于深度学习+pytorch+Flask+SpringBoot+Vue+MySQL的水果识别系统
    目录前言1.登陆注册2.水果识别3.识别记录4.用户管理5.个人中心6.模型训练7.模型测试源码获取前言本系统是一个完整的基于深度学习+pytorch+Flask+SpringBoot+Vue+MySQL的水果识别系统。包括LeNet、AlexNet、VGG、GoogLeNet、ResNet、MobileNetV2网络模型。可以直接......
  • 基于深度学习+pytorch+Flask+SpringBoot+Vue+MySQL的动物识别系统
    目录前言1.登陆注册2.动物识别3.识别记录4.用户管理5.个人中心6.模型训练7.模型测试源码获取前言本系统是一个完整的基于深度学习+pytorch+Flask+SpringBoot+Vue+MySQL的动物识别系统。包括LeNet、AlexNet、VGG、GoogLeNet、ResNet、MobileNetV2网络模型。可以直接......
  • MySQLDBA修炼之道-测试篇
    八、测试基础1.基础概念数据库性能测试一般是指通过运行测试程序来衡量硬件或软件(编译器、数据库等)在不同架构下的性能。衡量数据库性能的主要指标包括事务吞吐率和响应时间。事务吞吐率是指数据库操作的速率,即每秒能完成多少事务,由于MySQLInnoDB默认的模式是自动提交,......
  • 【昌哥IT课堂】MySQL8.4.0新特性:FLUSH_PRIVILEGES动态权限细化与隔离[译]
    介绍MySQL支持RELOAD权限。现在,想象一个数据库用户被授予了RELOAD权限,这允许该用户在系统上执行FLUSHPRIVILEGES语句。假设该用户意外地执行了另一个强大的语句,比如RESET或FLUSHTABLES。这可能会导致一些问题,对吧?考虑一个数据库管理员创建一个用户,目的是允许该用户仅......
  • zabbix6.2添加mysql数据库监控
    zabbix官网链接:MysqlmonitoringandintegrationwithZabbix如何在zabbix上添加mysql的监控,官网已经说的很清楚了,照着官网的介绍做就行了,我只说明遇到的坑。 步骤2中的template_db_mysql.conf的内容在官网选择文档版本下的Source链接。这个文件默认是放在/etc/zabbix/zabbix......