———————-「 特定DB内のテーブルをチェック 」———————–
++++ OK: MYISAM , INNODB
++++ NG: MEMORY

[root@colinux ~]# mysqlcheck --check DB01 -u root -p
Enter password:
DB01.TABLE007 OK
DB01.TABLE008 OK
DB01.TABLE009 OK
[root@colinux ~]#

[root@colinux ~]# mysqlcheck --check DB01 TABLE007 -u root -p
Enter password:
DB01.TABLE007 OK
[root@colinux ~]#

——————————————————————————————-

———————-「DB内のテーブルをOPTIMIZE 」———————–
++++ OK: MYISAM , INNODB
++++ NG: MEMORY

[root@colinux ~]# mysqlcheck --optimize --all-databases -u root -p
Enter password:
[root@colinux ~]#

DB01.TABLE007
note : Table does not support optimize, doing recreate + analyze instead
status : OK
DB01.TABLE008
note : Table does not support optimize, doing recreate + analyze instead
status : OK
DB01.TABLE009
note : Table does not support optimize, doing recreate + analyze instead
status : OK
DB02.animals Table is already up to date
DB02.animals02 Table is already up to date
TEST.Y2008_Y2009
note : The storage engine for the table doesn’t support optimize
TEST.Y2009 Table is already up to date
client_test_db.bug2247 Table is already up to date
client_test_db.foo_dfr Table is already up to date
client_test_db.my_demo_transaction

■INNODBに関しては、制限がある。
[root@colinux ~]# mysqlcheck --optimize DB01 TABLE007 -u root -p
Enter password:

DB01.TABLE007
note : Table does not support optimize, doing recreate + analyze instead
status : OK
[root@colinux ~]#

——————————————————————————————-

———————-「DB内のテーブルをREPAIR 」———————–
++++ OK: MYISAM
++++ NG: INNODB,MEMORY

■MYISAMは可能
[root@colinux ~]# mysqlcheck --repair TEST MYSQLIMP -u root -p
Enter password:

TEST.MYSQLIMP OK
[root@colinux ~]#

■INNODBはサポート外
[root@colinux ~]# mysqlcheck --repair DB01 -u root -p
Enter password:

DB01.TABLE007
note : The storage engine for the table doesn’t support repair
DB01.TABLE008
note : The storage engine for the table doesn’t support repair
DB01.TABLE009
note : The storage engine for the table doesn’t support repair
[root@colinux ~]#


■CHECK TABLE
http://dev.mysql.com/doc/refman/5.1/ja/check-table.html
CHECK TABLE はテーブルのエラーを確認します。CHECK TABLE は MyISAM、InnoDB、
そして ARCHIVE テーブルにのみ機能します。MySQL 5.1.9 から、CHECK は CSV
テーブルにも有効になりました。
MyISAM テーブルに対しては、キー統計もまた更新されます。

mysql> CHECK TABLE T01;
+———-+——-+———-+———-+
| Table | Op | Msg_type | Msg_text |
+———-+——-+———-+———-+
| test.T01 | check | status | OK |
+———-+——-+———-+———-+
1 row in set (0.00 sec)

mysql>

■REPAIR TABLES
http://dev.mysql.com/doc/refman/5.1/ja/repair-table.html
REPAIR TABLE は破損された可能性があるテーブルを修復します。これはデフォルトで、
myisamchk –recover tbl_name と同じ効果を持っています。REPAIR TABLE は MyISAM と ARCHIVE
テーブルに対して機能します。MySQL 5.1.9 から、REPAIR は CSV テーブルにも有効になりました。

■ANALYZE TABLES (Update table’s index statistics)
http://dev.mysql.com/doc/refman/5.1/ja/analyze-table.html
ANALYZE TABLE はテーブルのキーの分布を分析、格納します。
分析の最中に、テーブルは MyISAM のリード ロックを利用してロックされます。
InnoDB には、テーブルは書き込みロックでロックされます。
このステートメントは MyISAM と InnoDB テーブルと共に機能します。
MyISAM テーブルにとっては、このステートメントは myisamchk –analyze を利用する事と同じです。

mysql> analyze table T01;
+———-+———+———-+———-+
| Table | Op | Msg_type | Msg_text |
+———-+———+———-+———-+
| test.T01 | analyze | status | OK |
+———-+———+———-+———-+
1 row in set (0.00 sec)

■OPTIMAIZE TABLES
http://dev.mysql.com/doc/refman/5.1/ja/optimize-table.html
しテーブルの大部分を削除したり、変数長行で何箇所もテーブルを
変更した場合は(VARCHAR、VARBINARY、BLOB、または TEXT カラムを持つテーブル)、
OPTIMIZE TABLE を利用しなければいけません。
OPTIMIZE TABLE は MyISAM と InnoDB テーブルに対して のみ 機能します。
これは、NDB ディスク データ テーブルを含むその他のストレージ エンジンを
利用して作成されたテーブルには機能 しません。

—– MYISAM —–
mysql> OPTIMIZE TABLE T_TEST;
+—————-+———-+———-+—————————–+
| Table | Op | Msg_type | Msg_text |
+—————-+———-+———-+—————————–+
| WINDOWS.T_TEST | optimize | status | Table is already up to date |
+—————-+———-+———-+—————————–+
1 row in set (0.00 sec)

—– INNODB —–
mysql> OPTIMIZE TABLE T01;
+———-+———-+———-+———-+
| Table | Op | Msg_type | Msg_text |
+———-+———-+———-+———-+
| test.T01 | optimize | status | OK |
+———-+———-+———-+———-+
1 row in set (0.05 sec)

mysql>

■mysqlcheck
http://dev.mysql.com/doc/refman/5.1/ja/mysqlcheck.html
mysqlcheckのファンクションはmyisamchkと似ていますが、
作動方法が異なります。実質的な作動方法の違いは、mysqlcheckはmysqld
サーバが作動中の時に使用されなければいけません。
myisamchkはこのサーバが作動していない時に使用品kればいけません。
mysqlcheckを使用することの利点は、テーブルのチェックや修復時に
サーバを停止させなくてすむことです。
mysqlcheckはSQLステートメントCHECK TABLE、REPAIR TABLE、ANALYZE TABLE、
そしてOPTIMIZE TABLEをユーザにとって便利な方法で使用します。
実行したいオペレーションに対してどのステートメントを使用するか決定し、
実行のためサーバにステートメントを送信します。

[root@localhost ~]$ mysqlcheck –analyze test T01 -u root -ppassword
test.T01 OK
[root@localhost ~]$

—– MYISAM —–
[root@localhost WINDOWS]# mysqlcheck –optimize WINDOWS T_TEST -u root -ppassword
WINDOWS.T_TEST Table is already up to date
[root@localhost WINDOWS]#

[root@localhost WINDOWS]# mysqlcheck –repair WINDOWS T_TEST -u root -ppassword
WINDOWS.T_TEST OK
[root@localhost WINDOWS]#

[root@localhost WINDOWS]# mysqlcheck –repair WINDOWS -u root -ppassword
WINDOWS.Brokerage OK
WINDOWS.Channel OK
WINDOWS.ConfidenceTerm OK
WINDOWS.DetailCompany OK
WINDOWS.DetailForeignExchange OK

—– INNODB —–
[root@localhost WINDOWS]# mysqlcheck –optimize test T01 -u root -ppassword
test.T01 OK
[root@localhost WINDOWS]#

※ optimizeはmemory tableに利用出来ません。

[root@localhost WINDOWS]# mysqlcheck –repair test T01 -u root -ppassword
test.T01
note : The storage engine for the table doesn’t support repair

■myisamchk (MYISAM ONLY) テーブルにアクセスが無い事を確認
http://dev.mysql.com/doc/refman/5.1/ja/myisamchk.html
myisamchk ユーティリティはユーザのデータベース テーブルの情報を収集し、
チェック、修復、もしくは最適化します。myisamchk は MyISAM
テーブルとともに作動します(データやインデックスを記憶するための
.MYD や .MYI テーブル)。

[root@localhost WINDOWS]# myisamchk –analyze T_TEST.MYI
Checking MyISAM file: T_TEST.MYI
Data records: 1 Deleted blocks: 0
– check file-size
– check record delete-chain
– check key delete-chain
– check index reference
– check record links
[root@localhost WINDOWS]#

[root@localhost WINDOWS]# myisamchk –recover T_TEST
– recovering (with keycache) MyISAM-table ‘T_TEST’
Data records: 1
[root@localhost WINDOWS]#

※「誰も利用していない状態にしておく」
※「サービス停止をした方が良い」
※「オンラインの場合は、メンテナンス対象テーブルをロックする」

『起動時にMYISAMのテーブルを自動的にRecoverする為のオプション』
起動方法① mysqld –myisam-recover=QUICK
オプションファイル(my.cnf)に記入② –myisam-recover