程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Myisamchk

編輯:關於MYSQL數據庫

13 維護MySQL安裝
13.1 使用myisamchk進行表的維護和崩潰恢復
為了檢查/修復MyISAM表(.MYI和.MYD),你應該使用myisamchk實用程序。為了檢查/修復ISAM表(.ISM和.ISD),你應該使用isamchk實用程序。見9.4 MySQL 表類型。
“tbl_name.frm” 表定義(表格)文件
“tbl_name.MYD” 數據文件
“tbl_name.MYI” 索引文件

在下文中,我們將討論myisamchk,但是也適用於老的isamchk。

你可以使用myisamchk實用程序來獲得有關你的數據庫桌表的信息、檢查和修復他們或優化他們。下列小節描述如何調用myisamchk(包括它的選項的描述),如何建立一個表維護的時間表,並且如何使用myisamchk執行其各種功能。

如果你用--skip-locking運行mysqld(它在一些系統上是缺省的,如Linux),當mysqld正在使用同一個表時,你不能可靠地使用myisamchk檢查一張表。如果你能肯定在你運行myisamchk時沒有人通過mysqld正在存取表,在你開始檢查表之前,你僅需做mysqladmin flush-tables。如果你不能保證, 那麼當你檢查表時,你必須停掉MySQLd。如果你趍ysqld正在更新表時運行myisamchk,你可能得到一個表已破壞的警告,即使它沒有。

如果你沒使用--skip-locking,你能在任何時間使用myisamchk檢查表。當你這樣時,所有試圖更新表的客戶在繼續前將等到myisamchk就緒。

如果你使用myisamchk修復或優化表,你必須總是保證mysqld服務器不在使用表(如果你正在使用--skip-locking,這也適用)。如果你不停掉mysqld,在你運行myisamchk前,你至少應該做一個MySQLadmin flush-tables。

在大多數情況下,你也可使用命令OPTIMIZE TABLES優化並修復表,但是這不如myisamchk快或可靠(在真正的致命錯誤的情況下)。在另一方面,OPTIMIZE TABLE較易使用並且你不必須關心清空表。見7.9OPTIMIZE TABLE句法。

13.1.1 myisamchk調用語法
myisamchk這樣調用:

shell> myisamchk [options] tbl_name

options指定你想要myisamchk做什麼。他們在下面描述。(你也可以通過調用myisamchk --help得到一張選項表。) 沒有選項,myisamchk簡單地檢查你的表。為了得到更多的信息或告訴myisamchk執行校正操作,指定在下面和下小節描述的選項擇。

tbl_name是你想要檢查的數據庫表。如果你不在數據庫目錄的某處運行myisamchk,你必須指定到文件的路徑,因為myisamchk不知道你的數據庫位於哪兒。實際上,myisamchk別在乎你正在操作的文件是否位於一個數據庫目錄;你可以拷貝對應於一張數據庫表的文件到別處並且在那裡執行恢復操作。

如果你願意,你可以myisamchk命令行命名幾個表。你也能指定一個名字作為一個索引文件(用“ .MYI”後綴),它允許你通過使用模式“*.MYI”指定在一個目錄所有的表。例如,如果你在一個數據庫目錄,你可以這樣在目錄下檢查所有的表:

shell> myisamchk *.MYI

如果你不在數據庫目錄下,你可通過指定到目錄的路徑檢查所有在那裡的表:

shell> myisamchk /path/to/database_dir/*.MYI

你甚至可以通過為MySQL數據目錄的路徑指定一個通配符來檢查所有的數據庫中的所有表:

shell> myisamchk /path/to/datadir/*/*.MYI

myisamchk支持下列選項:

-a, --analyze
分析鍵值的分布。這通過讓聯結優化器更好地選擇表應該以什麼次序聯結和應該使用哪個鍵來改進聯結性能。
-#, --debug=debug_options
輸出調試記錄文件。debug_options字符串經常是'd:t,filename'。
-d, --description
打印出關於表的一些信息。
-e, --extend-check
非常徹底地檢查表。這僅在極端情況下是必要的。通常,myisamchk應該找出所有錯誤,即使沒有改選項。
-f, --force
覆蓋老的臨時文件。如果你在檢查表時使用-f (運行myisamchk沒有-r),myisamchk在檢查期間將自動為出現一個錯誤的表用-r重啟。
--help
顯示一條幫助消息並且退出。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved