Pis*_*3.0 12 mysql temp-tables mariadb
我在数据库中有大量的(InnoDB)表; 显然,用户能够使用JOIN创建SELECT,从而导致临时的,大的(因此在磁盘上)表.有时,它们是如此之大,以至于耗尽磁盘空间,导致各种奇怪的问题.
有没有办法限制磁盘表的临时表最大大小,以便表不会过度增长磁盘?tmp_table_size仅适用于内存表,尽管名称.我没有在文档中找到任何相关内容.
有一个关于选项的讨论disk-tmp-table-size
,但看起来提交没有通过审查或由于其他原因丢失(至少该选项在当前代码库中不再存在)。
我想你的下一个最佳尝试(除了增加存储空间之外)是调整 MySQL 以不创建磁盘临时表。DBA 上有一些这方面的提示。如果您有足够的 RAM 并且仅缺少磁盘存储,另一种尝试可能是创建一个 ramdisk 来存储“磁盘上”临时表。
在 MariaDB 和 MySQL 中没有这个选项。几个月前我遇到了和你一样的问题,我搜索了很多,最终通过在 NAS 上为临时数据集创建一个特殊的存储区域来部分解决它。
在 NAS 上创建一个文件夹或在内部硬盘上创建一个分区,根据定义,它的大小将受到限制,然后安装它,并在 mysql ini 中,将临时存储分配给该驱动器:(选择 windows/linux)
tmpdir="mnt/DBtmp/"
tmpdir="T:\"
Run Code Online (Sandbox Code Playgroud)
更改后应重新启动 mysql 服务。
使用这种方法,一旦驱动器已满,您仍然会遇到磁盘查询的“奇怪问题”,但其他问题都消失了。
归档时间: |
|
查看次数: |
3288 次 |
最近记录: |