MySQL Innodb--共享临时表空间和临时文件

在MySQL 5.7版本中引入Online DDL特性和共享临时表空间特性,临时数据主要存放形式为:

1、DML命令执行过程中文件排序(file sore)操作生成的临时文件,存储目录由参数tmpdir控制,以MY开头
2、超大事务提交生成binary log过程中用于数据缓存的临时文件,存储目录由参数tmpdir控制,以ML开头
3、使用ROW_FORMAT=COMPRESSED创建的压缩InnoDB临时表,存储目录由参数tmpdir控制,以frm和idb结尾
4、没用ROW_FORMAT=COMPRESSED创建的非压缩压缩InnoDB临时表,存储在由参数innodb_temp_data_file_path指定的共享临时文件中
5、使用COPY模式的Onine DDL创建的临时文件,存储在操作表相同目录下,以sql-开头,以frm和idb结尾
6、使用INPLACE模式的Onine DDL创建的临时文件,存储在操作表相同目录下,以sql-和sql-ib开头,以frm和idb结尾
7、Online DDL操作过程中排序操作使用的临时文件,存储目录由参数tmpdir控制,以ib开头
8、MySQL InnoDB存储引擎层使用的内部临时表,存储在由参数innodb_temp_data_file_path指定的共享临时文件中

MySQL 共享临时表空间(shared temporary tablespace)
在MySQL 5.7.1版本中引入,将临时表空间从系统表空间中独立处理,用来存放:
1、非压缩InnoDB临时表(non-compressed InnoDB temporary tables)
2、关系对象(related objects)
3、回滚段(rollback segment)

由于共享临时表空间主要存放的数据无需参与Crash Recovery,重启时可以被删除重建,方便回收空间。
共享临时表空间由参数innodb_temp_data_file_path控制,默认配置为ibtmp1:12M:autoextend,未指定路径时存在在innodb_data_home_dir下。

使用下面命令能查看MySQL临时目录下的文件

lsof |grep ‘/export/data/mysql/tmp/‘

输出为:

mysqld    22346   mysql    5u      REG               8,17            0   47278234 /export/data/mysql/tmp/ibW1DoSr (deleted)
mysqld    22346   mysql    6u      REG               8,17            0   47278235 /export/data/mysql/tmp/ibAhuhtS (deleted)
mysqld    22346   mysql    7u      REG               8,17            0   47278236 /export/data/mysql/tmp/ibiiHa4i (deleted)
mysqld    22346   mysql    8u      REG               8,17            0   47278237 /export/data/mysql/tmp/ibeje7dX (deleted)
mysqld    22346   mysql   13u      REG               8,17            0   47278238 /export/data/mysql/tmp/ibLORUJC (deleted)
mysqld    22346   mysql 2943u      REG               8,17            0   47278301 /export/data/mysql/tmp/MLVChF9b (deleted)
mysqld    22346   mysql 3785u      REG               8,17            0   47278326 /export/data/mysql/tmp/MLx6V0TO (deleted)
mysqld    22346   mysql 4795u      REG               8,17            0   47278371 /export/data/mysql/tmp/MLz5r2Yv (deleted)
mysqld    22346   mysql 4928u      REG               8,17            0   47278574 /export/data/mysql/tmp/ML7ivmrd (deleted)
mysqld    22346   mysql 5414u      REG               8,17            0   47278653 /export/data/mysql/tmp/MLx4HGxW (deleted)
mysqld    22346   mysql 6105u      REG               8,17            0   47278714 /export/data/mysql/tmp/MLADScmK (deleted)
mysqld    22346   mysql 6314u      REG               8,17            0   47278715 /export/data/mysql/tmp/MLG8aCpz (deleted)
mysqld    22346   mysql 6315u      REG               8,17            0   47278716 /export/data/mysql/tmp/MLJ7MuCo (deleted)

可以看到该目录下有ML开头和ib开头的文件,用来缓存BINLOG和排序结果。

原文地址:https://www.cnblogs.com/gaogao67/p/10969359.html

时间: 2024-08-29 02:49:10

MySQL Innodb--共享临时表空间和临时文件的相关文章

MySQL InnoDB 共享表空间和独立表空间

共享表空间 某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下. 默认的文件名为ibdata1, 初始化为10M. 由于是默认的方式,就暂且理解为Mysql官方推荐的方式.相对而言所有的数据都在一个(或几个)文件中,比较利于管理,而且在操作的时候只需要open这一个(或几个)文件即可,相对来说代价很低.但问题是在数据达到以G为单位来计算的时候优劣逆转.一个过大的文件很不利于管理,而且对于一个如此巨大的文件来说,读写它需要耗费的资源一样巨大.更加令

使用参数innodb_file_per_table支持MySQL InnoDB表数据共享空间自动收缩

http://heylinux.com/archives/2367.html http://blog.csdn.net/ywh147/article/details/8996022 使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构.表索引.表数据空间.我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作.然而当你使用InnoDB的时候,一切都变了.InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:i

mysql案例~ ibtmp1临时表空间暴涨问题

一 简介: 来聊聊关于临时表文件暴涨的相关厂家 二 分析: 1 mysql5.7已经可以设置单独的临时表目录,默认放置在数据目录,文件名为ibtmp1 2 ibtmp1文件磁盘占用无法被释放,除非重启实例 三 影响语句 1 显示创建的临时表 2 DDL 的更改列等copy方式的操作,需要拷贝数据到临时表中 3 select 查询语句应用到临时表的类型 注意 1  select 查询语句会先应用tmp_table_szie(内存分配)的量,当临时存储的量超过这个参数限制是,就会在ibtmp1中申请

MySQL如何判别InnoDB表是独立表空间还是共享表空间

InnoDB采用按表空间(tablespace)的方式进行存储数据, 默认配置情况下会有一个初始大小为10MB, 名字为ibdata1的文件, 该文件就是默认的表空间文件(tablespce file),用户可以通过参数innodb_data_file_path对其进行设置,可以有多个数据文件,如果没有设置innodb_file_per_table的话, 那些Innodb存储类型的表的数据都放在这个共享表空间中,而系统变量innodb_file_per_table=1的话,那么InnoDB存储引

看懂MySQL怎样判断InnoDB表是独立表空间还是共享表空间

本文参考原文-http://bjbsair.com/2020-03-22/tech-info/5348/概述 InnoDB采用按表空间(tablespace)的方式进行存储数据, 默认配置情况下会有一个初始大小为10MB, 名字为ibdata1的文件, 该文件就是默认的表空间文件(tablespce file),用户可以通过参数innodb_data_file_path对其进行设置,可以有多个数据文件,如果没有设置innodb_file_per_table的话, 那些Innodb存储类型的表的数

mysql 共享表空间的扩展

innodb表空间的扩展: 在配置共享表空间的情况下,mysql数据目录下会有一个文件ibdata1,而且随着数据的增多,持续增加, 数据库的删除操作并不会缩减ibdata1的容量. 这是由于my.cnf的配置: innodb_data_file_path = ibdata1:10M:autoextend 配置说明,innodb共享表空间文件是ibdata1,并且初始设置10M空间,当表空间不足时自动扩张 这样就会导致一个问题,当越来越多的数据增加的时候,ibdata也会持续膨胀,有的达到几十G

临时表空间临时文件损坏的处理方法

临时表空间的临时文件损害,解决办法就是,增加一个新的临时文件,把老的给删除了就行. ocp 053 699. Your database is using a default temporary tablespace that contains the temp01.tmp temporary file. All the users on the database use the default temporary tablspace. A user issues a query on the

ORACLE临时表空间总结

临时表空间概念 临时表空间用来管理数据库排序操作以及用于存储临时表.中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序.像数据库中一些操作: CREATE INDEX. ANALYZE.SELECT DISTINCT.ORDER BY.GROUP BY. UNION ALL. INTERSECT.MINUS.SORT-MERGE JOINS.HASH JOIN等都可能会用到临时表空间.当操作完成

临时表空间管理(查询-创建-删除等)

临时表空间概念 临时表空间用来管理数据库排序操作以及用于存储临时表.中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序.像数据库中一些操作: CREATE INDEX. ANALYZE.SELECT DISTINCT.ORDER BY.GROUP BY. UNION ALL. INTERSECT.MINUS.SORT-MERGE JOINS.HASH JOIN等都可能会用到临时表空间.当操作完成