首頁 > 資料庫 > mysql教程 > 如何在不重建整個資料庫的情況下有效清理InnoDB儲存引擎?

如何在不重建整個資料庫的情況下有效清理InnoDB儲存引擎?

Barbara Streisand
發布: 2024-12-06 22:03:15
原創
766 人瀏覽過

How Can I Effectively Clean an InnoDB Storage Engine Without Rebuilding the Entire Database?

清理InnoDB 儲存引擎:指南

在資料庫維護領域,如何從InnoDB 清除過時的資料的問題儲存引擎頻繁出現

InnoDB可以不用清理嗎重建?

不幸的是,與 MyISAM 不同,在不重建整個資料庫的情況下直接從 InnoDB 引擎中刪除已刪除的資料是不可行的。這是因為 InnoDB 使用複雜的基礎設施,在其 ibdata1 檔案中儲存各種類型的信息,包括表格資料、索引和元資料。簡單地優化表只會整合 ibdata1 中的數據,而不會縮小數據。

InnoDB 基礎設施清理

為了有效清理InnoDB 引擎,需要更全面的方法:

  1. 轉儲資料並刪除資料庫:匯出全部將資料寫入SQL 檔案並刪除所有非必需資料庫(不包括mysql和 information_schema)。
  2. 刷新事務並關閉MySQL:將innodb_fast_shutdown 配置為0 以完成交易刷新,然後關閉MySQL .
  3. 修改my.cnf:啟用innodb_file_per_table,將innodb_flush_method 設定為O_DIRECT,將 innodb_log_file_size 設為 innodb_buffer_pool_size 的 25%,並增加 innodb_buffer_pool_size。
  4. 刪除 ibdata 和 ib_logfile: 刪除這些文件,可選擇包含除 /var/lib/mysql/mysql 之外的所有子目錄。
  5. 啟動 MySQL: 重新建立 ibdata1 與 ib_logfile0/1。
  6. 導入數據: 恢復SQL 轉儲以填充新創建的數據庫

註釋:

  • 透過啟用innodb_file_per_table,每個InnoDB 表將駐留在ibdata1之外的自己的 .ibd 檔案中,從而簡化了優化和將來會刪除資料。
  • 如果發生錯誤,請恢復 mysql 架構檔案因刪除了 mysql 模式而發生。

透過此過程,新的 ibdata1 檔案將僅包含表元數據,顯著減小其大小並確保用於儲存活動資料的乾淨的 InnoDB 環境。

以上是如何在不重建整個資料庫的情況下有效清理InnoDB儲存引擎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板