MySQL临时表那些事儿

MySQL中临时表和临时文件的特点比较复杂。
本文将详细介绍各个版本的处理方法。
首先,临时表有两种类型。
一是存储用户数据,如Memory引擎、InnoDB临时表等,存在于内存或磁盘中;另一个存储SQL计算中间数据,例如Temptable文件,创建后可能会立即删除。
保留手柄以便操作。
MySQL临时表根据存储位置和类型分为磁盘临时表和内存临时表。
在5.6及之前版本中,磁盘临时表存储在配置的tmpdir中。
5.7以后,与普通表空间独立了。
在5.8中,数据和undo进一步分离。
内存临时表包括Memory和Temptable引擎。
后者使用变长存储来节省内存。
优化器创建的隐式临时表根据内存限制转换为磁盘表。
5.6仅支持MyISAM。
5.7之后可以选择InnoDB或者MYISAM。
临时文件主要用于缓存和排序,比如DDL操作中的归并排序,以及BinLog缓存。
临时文件通常在创建后立即删除。
可以通过innodb_tmpdir动态设置DDL操作时的临时文件路径,避免磁盘空间不足。
LoadData命令中,备库临时文件位置由slave_load_tmpdir控制,需要谨慎设置。
tmpdir、innodb_tmpdir、slave_load_tmpdir等相关参数影响临时表和文件的创建和存储。
了解这些参数设置对于优化系统性能和故障排除问题至关重要。
总的来说,理解MySQL临时表和临时文件的内部机制是解决问题的关键,需要深入研究和实践。

mysql临时表空间满了的原因

MySQL临时表空间满的原因有以下几种。
1、根据官网文档的解释,当数据库正常关闭或者取消初始化时,每次服务器启动时,临时表空间都会被删除并重新创建。
表空间被删除,重启后重新创建,即重启重建又重新启动临时表空间,所以重建后的大小为12M。
2.限制临时表空间的大小并允许自动增长,但最大容量有上限。