我的数据库中有较大的(InnoDB)表;显然,用户能够使用 JOIN 进行 SELECT,从而生成临时的大型(因此位于磁盘上)表。有时,它们太大以至于耗尽了磁盘空间,导致各种奇怪的问题。
有没有办法限制临时表的最大大小对于磁盘上的表,这样表就不会超出磁盘空间?tmp_表大小 https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_tmp_table_size尽管名称如此,但仅适用于内存表。我在 中没有找到任何相关内容文档 https://dev.mysql.com/doc/refman/5.7/en/internal-temporary-tables.html.
MariaDB 和 MySQL 中没有此选项。
几个月前我遇到了和你一样的问题,我进行了很多搜索,最终通过在 NAS 上为临时数据集创建一个特殊的存储区域来部分解决它。
在 NAS 上创建一个文件夹或在内部 HDD 上创建一个分区,根据定义,它的大小将受到限制,然后安装它,并在 mysql ini 中将临时存储分配给该驱动器:(选择 windows/linux)
tmpdir="mnt/DBtmp/"
tmpdir="T:\"
更改后应重新启动 mysql 服务。
使用这种方法,一旦驱动器已满,磁盘查询仍然会遇到“奇怪的问题”,但其他问题都消失了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)