Mysql Innodb优化表

标签 mysql database

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

我应该更改什么参数?

最佳答案

您不能在不删除 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 数据文件不会再增长太多,优化表将允许您缩小涉及的表数据文件,因为现在每个表都会管理它自己的数据文件。

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

关于Mysql Innodb优化表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008111/

相关文章:

mysql - 建议最佳查询性能 (MySQL)

PHP MySQL 从下拉菜单中插入

sql - 如何在没有 DB2 服务器的情况下导出 DB2 数据库

mysql - 使用数学函数混淆自动增量 DB id

php - PDO::__construct():服务器向客户端发送了未知的字符集 (255)。请向开发商举报

mysql - 当 PK 行不存在可选 FK 行(1 到无/多个)时,正确的 SQL 查询返回 null

mysql查询涨价幅度最大的商品

mysql - 如何在本地找到我为 Rails 应用程序创建的数据库并将其加载到服务器?

sql - 为 PostgreSQL 模拟 CREATE DATABASE IF NOT EXISTS?

php - MySQL 更新 PHP 和 JS