首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InnoDB中的表压缩?

问InnoDB中的表压缩?
EN

Database Administration用户
提问于 2011-12-21 04:22:17
回答 2查看 19.6K关注 0票数 3

我读过表索引压缩仅发生在MyISAM中,但我在dev.mysql中看到一篇文章,其中说: InnoDB支持表和索引压缩!那么,MyISAM的优点是什么呢?还有什么理由可以使用MyISAM吗?(除全文搜寻外)

EN

回答 2

Database Administration用户

回答已采纳

发布于 2011-12-21 19:35:09

恢复磁盘空间

就恢复InnoDB磁盘空间而言,您只需要将数据从ibdata1 1迁移回来一次,如果您启用innodb的话。_文件_每_表格。

一旦这样做,任何膨胀的InnoDB表都可以缩小。例如,如果您有一个名为InnoDB的mydb.mytable,则可以使用以下方法对其进行收缩:

代码语言:javascript
复制
ALTER TABLE mydb.mytable ENGINE=InnoDB;

或

代码语言:javascript
复制
OPTIMIZE TABLE mydb.mytable;

恢复数据库

@Craig在MyISAM上完全正确。

至于InnoDB,单独还原表可能是一场噩梦。这是因为表要么在ibdata1 (innodb_file_per_table=0)内部,要么在外部(innodb_file_per_table=1)。

  • 对于ibdata1以外的表,这是一场24/7的噩梦,因为如果在整个工作日中删除和重新创建表,.ibd文件的表空间id可能会发生变化。如果当天使用表空间id备份.ibd,则不能通过将其放入DB文件夹将其还原到DB文件夹。您也不能使用任何技巧ALTER TABLE tblname DISCARD TABLESPACE和ALTER TABLE tblname IMPORT TABLESPACE,因为表空间id是硬编码的。你必须写一些自定义的临时脚本来实现这样的奇迹。与ALTER TABLE tblname DISCARD TABLESPACE和ALTER TABLE tblname IMPORT TABLESPACE联合使用。
  • 对于ibdata1中的表,mysqldump是您的朋友。纳夫说..。
票数 3
EN

Database Administration用户

发布于 2011-12-21 19:15:31

在InnoDB

中的压缩

它存在于表级别的InnoDB版本中,从MySQL 5.1开始。http://dev.mysql.com/doc/innodb-plugin/1.0/en/。

我欣赏MyISAM方面的两个优点。

恢复磁盘空间

在MyISAM中,可以在不影响其他数据库和恢复磁盘空间的情况下删除文件系统上的数据库。使用InnoDB时,当您删除数据库时,ibdata文件不会收缩。我只能通过删除ibdata文件,然后恢复每个剩余的数据库来恢复ibdata文件中的空间。也许有人知道更好的方法?

恢复数据库

MyISAM的另一个优点是能够使用诸如bacula或Acronis这样的备份系统来恢复数据库。使用MyISAM,我可以通过文件系统命令将数据库复制到MySQL中或从MySQL中复制出来,而不影响其他数据库。使用InnoDB,我必须通过MySQL客户端完成一切。

因此,我认为MyISAM在某些情况下更容易管理。在一个混合了MyISAM和InnoDB的数据库中,您可能只能恢复特定的表,但我还没有尝试过。

就性能而言,我最近读到的一篇来自MySQL的白皮书显示,InnoDB更好。

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

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

复制
相关文章

相似问题

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