我们正在使用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.当查询运行时查看临时表使用情况的方法,以查看我们实际需要多大的大小&修复此错误
任何建议都会有帮助。
2条答案
按热度按时间tf7tbtn21#
它看起来像你的运行的磁盘空间为一个临时文件。
一些Linux和其他UNIX派生的操作系统使用RAM磁盘或其他小但快速的存储介质来存储
/tmp/
目录。一些MySQL / MariaDB操作有时会使用大量临时文件空间。默认情况下,该空间位于/tmp/
上。你可以试试
字符串
告诉它使用一个更大的文件系统。如果这样做可行,你可以改变MySql配置,使其成为启动时的默认值。阅读下面的内容。Changing the tmp folder of mysql
ldfqzlk82#
我们不得不重写SQL来解决这个问题,因为我们无法承受更大的示例。