從MyISAM切換到InnoBD時,我使用了默認設置。在閱讀優化技巧後,我意識到每個表格在單獨的文件中都更好。如何將表格從一個文件轉換爲單獨的文件每個表格模式?如何將現有數據庫的「innodb_file_per_table」參數從「OFF」更改爲「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=InnoDB
或ALTER TABLE <tablename> FORCE
。
上轉換更多提示:http://mysql.rjweb.org/doc.php/myisam2innodb
您可能不得不這樣做:
SET GLOBAL innodb_file_per_table = 1;
ALTER ...
我更喜歡有大表file_per_table,但小的在ibdata1中。
您實際上不需要爲此重新連接。對於同時具有GLOBAL和SESSION範圍的變量是必要的 - 在這種情況下,SESSION變量在連接時被初始化,並且更改GLOBAL的值不會影響當前會話 - 您需要重新連接或設置SESSION和GLOBAL。只有全局作用域的變量通常會立即生效('innodb_file_per_table'就是其中之一)。但是,有一些變量具有相當晦澀的行爲,所以當不確定時,確實更容易安全。 – elenst
@elenst - 謝謝。我可能被不一致的地方燒燬了。 –
- 1. 將幾何特徵更改爲現有數據庫
- 2. 將數據集更改爲數據庫
- 3. 如何在PHP中將數組數據更改爲數據庫?
- 4. MySql數據庫將現有表更改爲UTF8
- 5. 根據數據庫中的值將圖像從1更改爲5
- 6. 如何從現有的數據庫
- 7. 如何檢查數據庫中的現有值並更改它?
- 8. 如何更改數據庫
- 9. 如何將現有的sqllite數據庫轉換爲Rails的數據庫?
- 10. 將datetime列更改爲具有現有數據的varchar
- 11. 將現有的數據庫轉換爲數據庫項目
- 12. 如何更新現有的SQLite數據庫中的數據android
- 13. 從SQL Server更改爲Oracle數據庫
- 14. 在數據庫模型更改後傳輸現有數據(PostgreSQL)
- 15. 查詢從數據庫中獲取數據更改爲數組
- 16. 如何從Android數據庫的現有表中獲取數據
- 17. 更改mySQL數據庫記錄值onclick,如果0更改爲1
- 18. 如何將更改數據存儲到數據庫中?
- 19. 如何將現有塊更改爲nodequeue?
- 20. 如何從數據庫中獲取數據後更改圖像
- 21. 如何在參數爲空時從數據庫獲取所有數據
- 22. 如何使用NHibernate將模式更改集成到現有數據庫?
- 23. 將varchar更改爲數據庫中所有表列的nvarchar
- 24. 將Visual Studio中的數據庫連接從服務器數據庫暫時更改爲本地數據庫
- 25. JAVA:如何更改/刷新表後更改爲數據庫
- 26. 如何將我的數據庫中的所有表更改爲UTF8字符集?
- 27. 如何將MySQL數據庫更改爲UTC?
- 28. 如何在Windows中將SQLite數據庫journal_mode更改爲WAL?
- 29. 如何將Rails數據庫sqlite更改爲mongodb
- 30. 將數據類型varchar更改爲現有SQL Server 2005數據庫中的nvarchar。任何問題?
感謝您的回答。 – Dmitry