SQL 错误 [1114] [HY000]:表 '/rdsdbdata/tmp/#sql161_17a011_a' 已满

问题描述 投票:0回答:1

我们使用带有大型实例(16GB RAM)的AWS Aurora MySQL(8.0.mysql_aurora.3.04.0)InnoDB引擎。针对“reader”实例中的一个大表(250GB - 未分区)运行一个特定的“SELECT”查询,该查询执行一些计算,包括最小值、最大值、窗口函数、分组依据等。 这似乎是资源密集型的,执行几秒钟后,它会抛出以下错误

SQL Error [1114] [HY000]: The table '/rdsdbdata/tmp/#sql161_17a011_a' is full

我尝试将这些参数(@@temptable_max_ram、@@temptable_max_mmap)的大小从 1GB 增加到 2GB,但仍然导致相同的错误。 表统计信息是最新的,并且还将这些参数更改为以下值,但仍然出现相同的错误。

SET session aurora_tmptable_enable_per_table_limit = ON;
SET session tmp_table_size =  134217728; 
SET session max_heap_table_size =  134217728; 

我尝试了这些变量,但返回空

show variables like '%Created_tmp_disk_tables%';
show variables like '%Created_tmp_tables%';

innodb_file_per_table   = ON
innodb_data_file_path   = ibdata1:12M:autoextend
internal_tmp_mem_storage_engine = TempTable

我是 mysql 新手,想知道,

  1. 如果我在这里遗漏了一些东西并且
  2. 在查询运行时查看临时表使用情况的方法,以了解我们实际需要多少大小并修复此错误

任何建议都会有帮助。

mysql amazon-web-services query-optimization amazon-aurora
1个回答
0
投票

您的临时文件磁盘空间似乎已用完。

一些 Linux 和其他 UNIX 衍生操作系统使用 RAM 磁盘或其他小型但快速的存储介质作为其

/tmp/
目录。某些 MySQL / MariaDB 操作有时会使用大量临时文件空间。默认情况下,该空间位于
/tmp/

你可以尝试做

SET @@global tmpdir='/var/tmp'

告诉它使用更大的文件系统。如果有效,您可以更改 MySql 配置以使其成为默认配置。读这个。 更改mysql的tmp文件夹

© www.soinside.com 2019 - 2024. All rights reserved.