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

taor4pac  于 2023-11-16  发布在  Mysql
关注(0)|答案(2)|浏览(194)

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

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.如果我错过了什么,
1.当查询运行时查看临时表使用情况的方法,以查看我们实际需要多大的大小&修复此错误
任何建议都会有帮助。

tf7tbtn2

tf7tbtn21#

它看起来像你的运行的磁盘空间为一个临时文件。
一些Linux和其他UNIX派生的操作系统使用RAM磁盘或其他小但快速的存储介质来存储/tmp/目录。一些MySQL / MariaDB操作有时会使用大量临时文件空间。默认情况下,该空间位于/tmp/上。
你可以试试

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

字符串
告诉它使用一个更大的文件系统。如果这样做可行,你可以改变MySql配置,使其成为启动时的默认值。阅读下面的内容。Changing the tmp folder of mysql

ldfqzlk8

ldfqzlk82#

我们不得不重写SQL来解决这个问题,因为我们无法承受更大的示例。

相关问题