■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


MERGEテーブルにはINSERTは使用できない。

mysql> CREATE TABLE animals_merge (
-> id MEDIUMINT NOT NULL AUTO_INCREMENT,
-> name CHAR(30) NOT NULL,
-> PRIMARY KEY (id)
-> ) ENGINE = MERGE;
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO animals_merge (name) VALUES (“dog”),(“cat”),(“penguin”),
-> (“lax”),(“whale”),(“ostrich”);
ERROR 1036 (HY000): Table ‘animals_merge’ is read only

mysql> alter table animals_merge engine=MYISAM;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> INSERT INTO animals_merge (name) VALUES (“dog”),(“cat”),(“penguin”),
(“lax”),(“whale”),(“ostrich”);
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0

mysql> select * from animals_merge;
+—-+———+
| id | name |
+—-+———+
| 1 | dog |
| 2 | cat |
| 3 | penguin |
| 4 | lax |
| 5 | whale |
| 6 | ostrich |
+—-+———+
6 rows in set (0.01 sec)

mysql> alter table animals_merge engine=MERGE;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

※ MERGEに戻すとデータが入っていない。

mysql>

mysql> select * from animals_merge;
Empty set (0.00 sec)

次回は本来の使い方である、2つ以上のテーブルでMERGEテーブルを
作成してみます。


バッチ処理結果をカスタマイズする。

–html HTMLフォーマット出力 (-H)
–xml XMLフォーマット出力 (-X)
–verbose 詳細表示(-v , -vv, -vvv) (-v)
–table TABLE形式で出力 (-t)
–skip-column-names カラムを表示しない (-N)
–columun-names カラムを表示
–execute=name 指定したクエリーを実行する (-e)
–force エラーを無視して続行 (-f)

[root@colinux ~]# ls
backupfiles mysql–help.txt select_batch1.sql
[root@colinux ~]# mysql test < select_batch1.sql -p --html > select_batch1.html
Enter password:
[root@colinux ~]# cat select_batch1.html

< TD>SHOW WARIN
idnamecomment
1test update
2SHOW WARIN
22222222222
3select_limtest 20090117
4select_limtest 20090117
5s
elect_lim
test 20090117
6select_limte
st 20090117
7select_limtest 20090117
8select_limtest 20090117
9s
elect_lim
test 20090117

[root@colinux ~]#

[root@colinux ~]# mysql test < select_batch1.sql -p --table > select_batch1.txt
Enter password:
[root@colinux ~]# cat select_batch1.txt
+—-+————+—————+
| id | name | comment |
+—-+————+—————+
| 1 | SHOW WARIN | test update |
| 2 | SHOW WARIN | 22222222222 |
| 3 | select_lim | test 20090117 |
| 4 | select_lim | test 20090117 |
| 5 | select_lim | test 20090117 |
| 6 | select_lim | test 20090117 |
| 7 | select_lim | test 20090117 |
| 8 | select_lim | test 20090117 |
| 9 | select_lim | test 20090117 |
+—-+————+—————+
[root@colinux ~]#

[root@colinux ~]# mysql test < select_batch1.sql -p -vvv Enter password: -------------- select * from test.T1 -------------- +----+------------+---------------+ | id | name | comment | +----+------------+---------------+ | 1 | SHOW WARIN | test update | | 2 | SHOW WARIN | 22222222222 | | 3 | select_lim | test 20090117 | | 4 | select_lim | test 20090117 | | 5 | select_lim | test 20090117 | | 6 | select_lim | test 20090117 | | 7 | select_lim | test 20090117 | | 8 | select_lim | test 20090117 | | 9 | select_lim | test 20090117 | +----+------------+---------------+ 9 rows in set (0.00 sec) Bye [root@colinux ~]# [root@colinux ~]# mysql test < select_batch1.sql -p --skip-column-names Enter password: 1 SHOW WARIN test update 2 SHOW WARIN 22222222222 3 select_lim test 20090117 4 select_lim test 20090117 5 select_lim test 20090117 6 select_lim test 20090117 7 select_lim test 20090117 8 select_lim test 20090117 9 select_lim test 20090117 [root@colinux ~]# ■HTMLフォーマット batch_html

■テーブルフォーマット
batch_table_format

■Colums無し (他のバッチ連携などに便利)
batch_no_colum