萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL數據庫 優化、分析、檢查及修復

MySQL數據庫 優化、分析、檢查及修復

1、對表進行優化

  2、對表進行分析(分析並存儲myisam和bdb表中鍵的分布)

  3、對表進行檢查(檢查表的錯誤,並且為myisam更新鍵的統計內容)

  4、對表進行修復(修復被破壞的myisam表)

  一、對表進行優化

  優化表有很多方式實現: optimize table語句、mysql教程check工具(服務器要運行)或myisamchk(服務器沒有運行或表中沒有交互)

  為什麼優化?隨著mysql的使用,包括blob和varchar字節的表將變得比較繁冗,因為這些字段長度不同,對記錄進行插入、更新或刪除時,會占有不同大小的空間,記錄就會變成碎片,且留下空閒的空間。像具有碎片的磁盤,會降低性能,需要整理,因此要優化。

  1、利用optimize語句對表進行優化

  # mysql>optimize table 表名

  這樣就對表名進行了優化。

  2、利用mysqlcheck對表進行優化

  mysqlcheck可進行優化外,還可執行大量的檢查和修復任務。

  # mysqlcheck -o 數據庫教程名 表名 -uroot -p111111(一張表)

  # mysqlcheck -o 數據庫名 表名1 表名2 -uroot -p111111(多張表)

  # mysqlcheck -o 數據庫名 -uroot -p111111(對整個數據庫)

  3、利用myisamchk對表進行優化

  # myisamchk --quick --check-only-changed --sort-index --analyze 表名

  # myisamchk -r 表名(參數-r表示對表進行修復,同時也刪去了浪費的空間)

  # myisamchk -r /usr/local/mysql/data/testblog/article(指定表所在的路徑)

  以上操作需在服務器關閉或沒有與服務器互操作的時候,可以使用myisamchk命令行工具(如果服務器正在運行,那麼在運行這條語句之前利用mysqladmin flush-tables對表進行刷新;需確保服務器沒有與表進行互操作,否則會出現故障)。myisamchk是最老的方法。必須在正確位置上運行myisamchk,或者指定表所在的路徑。

  注意:在優化過程中,表會被鎖住,因此不要在忙時進行優化操作。同樣,需要有足夠的空間才能進行optimize table。如果沒有磁盤空間,mysql將不能進行優化,表也無法使用。

  優化是對包含myisam表的數據庫的常規管理事務中一個重要環節,應該定期進行。

  二、對表進行分析

  對表的定期分析可以改善性能,且應該成為常規維護工作的一部分。因為通過更新表的索引信息對表進行分析,可改善數據庫性能。

  有三種方法可以對表進行分析:

  1、連接到mysql時,使用analyze table語句

  2、利用mysqlcheck命令行工具(服務器需要運行,並且只對myisam表起作用)

  3、利用myisamchk命令行工具(服務器不應該運行,或無對所操作的表發生互操作)

  # analyze table 表名;

  # mysqlcheck -a 數據庫名 表名 -uroot -p111111

  # mysqlcheck -a 數據庫名 表名1 表名2 -uroot -p111111

  如果試圖對不支持分析操作的表進行分析(如innodb),那操作將無法進行。

  # myisamchk -a /usr/local/mysql/data/數據庫/表名

copyright © 萬盛學電腦網 all rights reserved