Mysql

mysql中ibdata1文件有什麼用

  • May 7, 2012

我的應用程序將後端數據庫作為 Mysql(InnoDb 引擎),目前我的客戶希望將 ibdata 文件的大小減小到某個固定大小。我找到了以下三個解決方案。

解決方案1:innodb_file_per_table

解決方案2:innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

解決方案3:innodb_data_file_path=ibdata1:10M:autoextend:max:50M

而且我真的不了解 ibadata1 文件,有人可以幫助我嗎?我想知道修復 ibdata 大小(解決方案 3)是否安全以及 ibdata 到底有什麼用?

在處理這種複雜的 DBMS 時,您確實應該徹底查看文件。 http://dev.mysql.com/doc/refman/5.1/en/innodb-configuration.html狀態:

InnoDB 儲存引擎管理的兩個重要的基於磁碟的資源是它的表空間數據文件和它的日誌文件。如果不指定 InnoDB 配置選項,MySQL 會在 MySQL 數據目錄中創建一個名為 ibdata1 的自動擴展 10MB 數據文件和兩個名為 ib_logfile0 和 ib_logfile1 的 5MB 日誌文件。

基本上,ibdata1 文件包含 InnoDB 表的表數據。如果您出於性能原因使用不同的儲存子系統來儲存第二個文件,或者如果您的原始分區上的 ibdata1 空間不足並且想要一個簡單的附加組件,則指定多個文件是有意義的儲存與不同的儲存文件。固定文件大小顯然會限制可以儲存在 InnoDB 表中的數據總量。

在您的情況下,ibdata1 文件可能會自動增長,因此隨著更多數據放入 InnoDB 表中,它會膨脹。從 InnoDB 表中刪除記錄後,文件將包含標記為“空閒”的頁面,這些頁面可用於將來的數據,但文件本身是不可收縮的。如果您已刪除大量數據並需要縮小 ibdata1,則唯一受支持的方法是使用備份表mysqldump並重新初始化數據庫 - 有關詳細資訊,請參閱此 StackOverflow 答案

引用自:https://serverfault.com/questions/386616