执行以下查询时,我们遇到错误表’/ var / lib / mysql / temp /#sql_2d22_1’已满(实际表名称不同).我对此做了大量的研究;大多数答案似乎都取决于没有足够的驱动器空间或与InnoDB引擎相关的细节.但是,我已经验证了我们有足够的可用空间并且正在使用MyISAM存储引擎.
select a.* from some_table a,
(select Account, Date, Amount, count(*) as Dupes from some_table
GROUP BY Account, Date, Amount HAVING Dupes > 1) b
WHERE a.Account = b.Account and a.Date = b.Date and a.Amount = b.Amount;
以下是一些细节:
>我们在具有6GB RAM的CentOS 6服务器上使用MySQL版本5.5.36
>托管MySQL临时目录的驱动器大小为120GB,其中大约35个正在使用中
>该表有大约7000万条记录,大小约为3.2GB
> big-tables设置为1
> max_heap_table_size设置为4096M
> tmp_table_size也是4096M
> myisam_data_pointer_size为5
什么可能导致此错误?我非常感谢任何建议,因为我不太了解数据库配置和处理大型表.
更新:昨天我注意到临时目录没有达到容量;当查询运行时,目录的大小缓慢增加大约200MB,然后我得到错误.
解决方法:
很多有用的信息和提示可以在这里找到:
标签:mysql,myisam
来源: https://codeday.me/bug/20190806/1604270.html