【发布时间】:2014-05-02 01:53:54
【问题描述】:
托管旧应用程序的 Mysql 5.05 仍然受到用户的喜爱。不幸的是,我充其量只是一个 hack dba,除非绝对必要,否则我对安全迁移到新版本数据库的技能非常犹豫。我们正在采购一个新的应用程序来接管旧应用程序的责任,但可能需要一年左右的时间。
无论如何,前几天我正在修补应用程序并向表中添加一列,该命令需要一段时间才能完成,同时几乎填满了我托管数据文件的驱动器。 (表大约是25G) 我相信这是创建临时表的功能。由于我不清楚的原因,添加列后空间没有再次空闲;即,我丢失了大约 25G 的磁盘空间。我相信(?)这是由于数据库是使用单个数据文件创建的;我不太确定原因,但我知道我必须在其他地方腾出一些空间才能使驱动器进入可操作状态。
话虽如此,我已经添加了列,但是对于没有索引的应用程序来说,它毫无价值。我推迟了添加索引,试图确定它是否会在创建索引时创建另一个巨大的、持久的“临时”表。任何人都可以让我深入了解:
create index 和/或alter table create index 语句会导致创建与现有表大小相同的临时表吗?
如何恢复添加列时添加到 ibdata1 的空间?
非常感谢任何和所有建议。
【问题讨论】: