【发布时间】:2021-07-14 11:35:13
【问题描述】:
我在 Windows server 2019 上运行 MySQL 8.0.23。 两张表:
CREATE TABLE `tblp` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`datum` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `index_dat` (`datum`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
和
CREATE TABLE `tblpdet` (
`id` int unsigned NOT NULL,
`katbr` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`redid` int unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`redid`),
KEY `Index_2` (`id`),
KEY `idx_katbr` (`katbr`),
CONSTRAINT `FK_tblpdet_1` FOREIGN KEY (`id`) REFERENCES `tblp` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
现在,如果我执行:
select katbr, min(date(datum))
from tblp p
join tblpdet d on p.id = d.id
group by katbr;
我收到错误
错误代码:1114。表 'd:\tmp#sql1e5c_18_1eb' 已满
如果我执行:
select katbr, min(redid)
from tblpdet
group by katbr;
然后它就可以正常工作了。
结果应该返回大约 120.000 行。
以下是与此问题相关的全局设置:
> innodb_data_file_path=ibdata1:12M:autoextend
> innodb_buffer_pool_size=51539607552
表 tblp 有大约 5.800.000 行,而 tblpdet 有大约 43.000.000 行。 MySQL 的数据文件夹位于具有 800GB 可用空间的 SSD(镜像)驱动器上。 总内存为 128GB; 机器有 2 个处理器,总共 20 个内核,只运行 MySQL(目前)。
我阅读的所有内容都以“磁盘空间不足”或 innodg_data_file_path 配置错误而告终。有人帮忙吗?
【问题讨论】:
-
您的 d: 驱动器上是否有足够的空间?您是否在 my.cnf 配置文件的 innodb_data_file_path 或 tmp_table_size 设置中设置了一些限制?
-
d: 上有 800GB 可用空间,tmp_file_size=7516192768。 “innodb_data_file_path 的限制”是什么意思?正如我提到的,innodb_data_file_path=ibdata1:12M:autoextend
标签: mysql