首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql Innodb优化表

Mysql Innodb优化表
EN

Stack Overflow用户
提问于 2015-01-18 15:43:52
回答 2查看 905关注 0票数 2

我在C:\驱动器上有一个100 on的innodb表,现在C:\驱动器空间不足。我删除了很多行,但ibd文件并没有缩小。我在d:\驱动器上有超过200 up的可用空间,随后将tmpdir配置在d:\驱动器中,并试图在优化表时优化表.But。当我优化表时,它将占用c:\驱动器上剩余的所有空间,而不使用d:\

我应该更改哪些参数?

EN

回答 2

Stack Overflow用户

发布于 2015-01-18 22:52:24

如果不将其删除,则无法收缩innodb数据文件(默认名称为ibdata1) :S。

使用innodb引擎时,应该使用innodb_file_per_table=1

要解决您的空间问题,您应该:

1)执行数据库全备份:mysqldump -u root -pMyPassword -R --all-databases > full.sql

2)停止mysql服务

3)添加(或更改)参数innodb_file_per_table=1

4)丢弃已有的innodb数据文件(/$mysqldir/ibdata1)

5)启动mysql服务

6)恢复备份:mylsql -u root -pMyPassword mysql < full.sql

现在innodb数据文件不会再增长太多,优化表将允许您缩小涉及到的表数据文件,因为现在每个表都会占用它自己的数据文件。

使用符号链接(至少在Linux下),它允许您在不同的磁盘上定位数据库。

票数 1
EN

Stack Overflow用户

发布于 2015-01-18 22:38:46

有一个tmpdir参数可以解决这个问题。我认为你可以通过以下方式来设置

代码语言:javascript
复制
SET GLOBAL tmpdir = D:/temp

在进行任何优化操作之前或在mysld下添加以下内容

代码语言:javascript
复制
set-variable = tmpdir=/var/tmp

作为奖励,我强烈建议您使用

代码语言:javascript
复制
innodb_file_per_table=1

让每个表有单独的文件,当然如果你有innodb表的话。此外,使用压缩数据将减少您的磁盘使用量。

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

https://stackoverflow.com/questions/28008111

复制
相关文章

相似问题

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