栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在MySQL中缩小/清除ibdata1文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在MySQL中缩小/清除ibdata1文件

ibdata1
并没有减少,这是MySQL的一个特别令人讨厌的功能。该
ibdata1
文件实际上不能缩小,除非你删除所有数据库,删除文件并重新加载转储。

但是您可以配置MySQL,以便将每个表(包括其索引)存储为单独的文件。这样

ibdata1
就不会增长那么大。根据Bill
Karwin的评论
,默认情况下从MySQL 5.6.6版本开始启用此功能。

不久前我做了这个。但是,要将服务器设置为对每个表使用单独的文件,您需要进行更改

my.cnf
才能启用此功能:

[mysqld]innodb_file_per_table=1

http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-
tablespaces.html

当您要回收空间时,

ibdata1
实际上必须删除文件:

  1. 数据库 以外的
    mysqldump
    所有数据库,过程,触发器等执行a
    mysql``performance_schema
  2. 删除 除上述2个数据库以外的 所有 数据库
  3. 停止mysql
  4. 删除
    ibdata1
    ib_log
    文件
  5. 启动mysql
  6. 从转储还原

当您在步骤5中启动MySQL时,

ibdata1
ib_log
文件将被重新创建。

现在您可以出发了。创建新数据库进行分析时,这些表将位于单独的

ibd*
文件中,而不是中
ibdata1
。由于通常在不久之后
ibd*
删除数据库,因此文件将被删除。

http://dev.mysql.com/doc/refman/5.1/zh-CN/drop-
database.html

您可能已经看到了:http :
//bugs.mysql.com/bug.php?id=1341

通过使用该命令

ALTER TABLE <tablename> ENGINE=innodb
OPTIMIZE TABLE<tablename>
一个命令,可以将数据和索引页面从ibdata1提取到单独的文件。但是,除非执行上述步骤,否则ibdata1将不会收缩。

关于

information_schema
,这是不必要的,也没有可能删除。实际上,它只是一堆只读视图,而不是表。而且没有与之关联的文件,甚至没有数据库目录。在
informations_schema
使用内存数据库引擎和被丢弃,一旦停止再生/重启mysqld的。参见https://dev.mysql.com/doc/refman/5.7/en/information-
schema.html。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/408146.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号