首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用另一个磁盘用于“优化表”临时文件

使用另一个磁盘用于“优化表”临时文件
EN

Database Administration用户
提问于 2017-02-02 12:09:09
回答 1查看 2.4K关注 0票数 2

我在磁盘上有一个大表(70Go),只有9个Go空闲空间,我需要优化这个空间(“优化表.”)。

我已经更改了"tmpdir“参数,以便在另一个磁盘上创建具有足够空间的临时文件。

但是临时文件“#sql.”仍然是在位于表所在的mysql数据文件夹中创建的。

有没有办法告诉mysql在另一个磁盘上为“优化表”创建临时文件?

如果没有,是否将表传输到另一个磁盘的唯一解决方案,在那里运行“优化表”,然后替换旧的表文件?

下面是表的“显示表状态”返回的行:

代码语言:javascript
复制
Engine  Version Row_format  Rows    Avg_row_length  Data_length Max_data_length Index_length    Data_free   Auto_increment  Create_time Update_time Check_time  Collation   Checksum    Create_options  Comment
InnoDB  10  Compact 218780456   176 38628507648 0   18179555328 17278435328 290029517   2016-02-25 16:33:50 NULL    NULL    utf8_general_ci NULL
EN

回答 1

Database Administration用户

发布于 2017-02-02 22:37:04

如果您已经从表中删除了大部分行,OPTIMIZE表只需要足够的空间来构建一个新的、更小的副本。复制完成后,它将重命名,然后删除旧表。

如果表有自己的表空间(用innodb_file_per_table=ON构建),那么释放的空间将返回给操作系统。但是..。.ibd中的17 in空闲不能用于表副本。副本将放在一个单独的文件中。因此,如果结果表大于8GB (data+index),则可能会失败。

如果是=OFF,则在增加文件大小之前,OPTIMIZE将尝试使用ibdata1中的空闲空间。

有17‘t免费的地方,我不知道在哪里。

另外,检查TABLE STATUS中的其他表。Data_free用于ibdata1中的所有表都是相同的值。这个值是多少?

在狭小的空间里工作有一些技巧,但我需要回答提出的问题。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/163021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档