2017-04-23 337 views

回答

1

如果您使用的是MariaDB 10.x,那麼innodb_file_per_table=1是默認設置,因此只要您使用默認設置,新的InnoDB表和那些從MyISAM轉換到InnoDB的表將已經有單獨的表空間。

如果您默認使用MariaDB 5.5,innodb_file_per_table=0。要開始使用單獨的表空間,請運行SET GLOBAL innodb_file_per_table = 1;。從那時起,直到服務器重新啓動,所有新創建和更改的InnoDB表將使用此選項。要使選項永久化,請將其添加到cnf文件中。

要將現有的InnoDB錶轉換爲單獨的表空間,可以運行 ALTER TABLE <tablename> ENGINE=InnoDBALTER TABLE <tablename> FORCE

+0

感謝您的回答。 – Dmitry

0

上轉換更多提示:http://mysql.rjweb.org/doc.php/myisam2innodb

可能不得不這樣做:

SET GLOBAL innodb_file_per_table = 1; 
ALTER ... 

我更喜歡有大表file_per_table,但小的在ibdata1中。

+0

您實際上不需要爲此重新連接。對於同時具有GLOBAL和SESSION範圍的變量是必要的 - 在這種情況下,SESSION變量在連接時被初始化,並且更改GLOBAL的值不會影響當前會話 - 您需要重新連接或設置SESSION和GLOBAL。只有全局作用域的變量通常會立即生效('innodb_file_per_table'就是其中之一)。但是,有一些變量具有相當晦澀的行爲,所以當不確定時,確實更容易安全。 – elenst

+0

@elenst - 謝謝。我可能被不一致的地方燒燬了。 –

相關問題