MySQL InnoDB 儲存引擎清理
要清理MySQL InnoDB 儲存引擎並從已刪除的表中刪除數據,請按照以下步驟操作操作:
理解InnoDB架構
InnoDB 在 ibdata1文件中儲存了六種類型的信息:
- 表格資料
- 表索引
- MVCC(多重版本並發)控制)數根據
- 表元資料(資料字典)
- 雙寫入緩衝區
- 插入緩衝區
你可以運行OPTIMIZE TABLE 嗎?
使用 OPTIMIZE TABLE儲存在 ibdata1 中的 InnoDB 表有兩個效果:
- 它使表格的資料和索引在檔案內連續。
- 它透過附加修改的資料和索引使 ibdata1 成長。
你可以運行 OPTIMIZE TABLE 嗎innodb_file_per_table?
啟用此選項後,OPTIMIZE TABLE 會為每個 InnoDB 表創建單獨的 .ibd 文件。雖然這種隔離將資料和索引與 ibdata1 分開,但它不會從 ibdata1 中刪除資料字典條目。
InnoDB 基礎設施清理
要縮小ibdata1 並刪除不必要的資料:
- 將所有資料庫轉儲到SQL 文字檔案🎜>
- 將所有資料庫轉儲到SQL 文字檔案🎜>
- 將所有資料庫轉儲到SQL 文字檔案🎜>
- 將所有資料庫轉儲到SQL 檔案中(SQLData.sql).
- 刪除除mysql 和information_schema之外的所有資料庫。保留使用者授權。 將 innodb_fast_shutdown 設為 0 以刷新交易變更。
- 關閉 MySQL。
- 使用這些修改 my.cnf(或my.ini)設定:
-
innodb_file_per_table
- innodb_flush_method=O_DIRECTinnodb_log_file_size=1Gfile_size=1G%(確保它是 25% innodb_buffer_pool_size)
-
- 刪除 ibdata
和 ib_logfile
檔案。
啟動 MySQL。 匯入 SQLData.sql。 經過這個過程, ibdata1 將只包含表元數據,各個 InnoDB 表將儲存在擴展名為 .frm 和 .ibd 的單獨檔案中。然後可以使用 OPTIMIZE TABLE 來縮小表的 .ibd 檔案。
以上是如何清理和縮小 MySQL InnoDB 儲存引擎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!