我们使用带有大型实例(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 新手,想知道,
任何建议都会有帮助。
您的临时文件磁盘空间似乎已用完。
一些 Linux 和其他 UNIX 衍生操作系统使用 RAM 磁盘或其他小型但快速的存储介质作为其
/tmp/
目录。某些 MySQL / MariaDB 操作有时会使用大量临时文件空间。默认情况下,该空间位于 /tmp/
。
你可以尝试做
SET @@global tmpdir='/var/tmp'
告诉它使用更大的文件系统。如果有效,您可以更改 MySql 配置以使其成为默认配置。读这个。 更改mysql的tmp文件夹