Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将现有innodb表拆分为单独的文件_Mysql_Innodb - Fatal编程技术网

Mysql 将现有innodb表拆分为单独的文件

Mysql 将现有innodb表拆分为单独的文件,mysql,innodb,Mysql,Innodb,我想知道是否可以将现有的InnoDB表拆分为多个文件。我理解,如果您在创建表之前指定每个表的innodb\u文件;它们被分割成单独的文件。但我有一个150GB的现有数据库;我现在需要把一张桌子移到另一台机器上 通常这不会是个问题。但我注意到,当您使用InnoDB并尝试截断/删除表时;磁盘上的空间没有重新分配(即,ibdata1的大小没有减小)。这是一个问题,因为我移动表的原因是由于我当前服务器上的空间问题。因此,我试图将现有的ibdata1文件拆分为单独的表文件。这将使我能够灵活地在移动表后重新

我想知道是否可以将现有的InnoDB表拆分为多个文件。我理解,如果您在创建表之前指定每个表的
innodb\u文件
;它们被分割成单独的文件。但我有一个150GB的现有数据库;我现在需要把一张桌子移到另一台机器上


通常这不会是个问题。但我注意到,当您使用InnoDB并尝试截断/删除表时;磁盘上的空间没有重新分配(即,
ibdata1
的大小没有减小)。这是一个问题,因为我移动表的原因是由于我当前服务器上的空间问题。因此,我试图将现有的
ibdata1
文件拆分为单独的表文件。这将使我能够灵活地在移动表后重新分配磁盘空间。

您能将表复制到另一个数据库(插入db2.tablename SELECT*FROM db1.tablename)以获得所需的文件,然后删除旧数据库并重命名吗?是的,这是一个好主意。空间仍然是我面临的问题;我要试试这个。谢谢。可能重命名该表也会将其拆分,请将table foo重命名为foo2@nos谢谢我只是担心这样做,因为桌子太大了。我尝试了@Dan Grossman的建议,但没有为新表创建单独的文件;我正在使用
innodb\u file\u per\u table
。古怪的