テーブルに関する情報またはその統計を取得するには、次に示すコマンドを実行します。これらの情報については後で詳しく説明します。
myisamchk -m
tbl_name
myisamchk を 「describe モード」 で実行し、テーブル情報を生成する。外部ロックが無効になっている MySQL サーバを起動した場合には、myisamchk は、実行中に更新があったテーブルに対してエラーを報告することがあるが、データ破壊の危険性はない。describe モードでmyisamchk がテーブルを変更することはない。
myisamchk -d -v
tbl_name
実行中の処理に関する詳細な情報を取得するには、-v
追加して、myisamchk
を冗長モードで実行する。
myisamchk -eis
tbl_name
テーブルの最重要情報のみを表示する。このオペではテーブル全体を読み取るため、時間を要する。
myisamchk -eiv
tbl_name
-eis
とほぼ同じ。このオプションを使用すると、進行中の処理
(それまでに何が行われたか) も表示する。
ここで、この 3 つのコマンドを使用した出力例を示します。テーブル内の任意データとインデックス ファイルのサイズに基づいています。
-rw-rw-r-- 1 monty tcx 317235748 Jan 12 17:30 company.MYD -rw-rw-r-- 1 davida tcx 96482304 Jan 12 18:35 company.MYI
myisamchk -d の出力例
MyISAM file: company.MYI Record format: Fixed length Data records: 1403698 Deleted blocks: 0 Recordlength: 226 table description: Key Start Len Index Type 1 2 8 unique double 2 15 10 multip. text packed stripped 3 219 8 multip. double 4 63 10 multip. text packed stripped 5 167 2 multip. unsigned short 6 177 4 multip. unsigned long 7 155 4 multip. text 8 138 4 multip. unsigned long 9 177 4 multip. unsigned long 193 1 text
myisamchk -d -v の出力例
MyISAM file: company Record format: Fixed length File-version: 1 Creation time: 1999-10-30 12:12:51 Recover time: 1999-10-31 19:13:01 Status: checked Data records: 1403698 Deleted blocks: 0 Datafile parts: 1403698 Deleted data: 0 Datafile pointer (bytes): 3 Keyfile pointer (bytes): 3 Max datafile length: 3791650815 Max keyfile length: 4294967294 Recordlength: 226 table description: Key Start Len Index Type Rec/key Root Blocksize 1 2 8 unique double 1 15845376 1024 2 15 10 multip. text packed stripped 2 25062400 1024 3 219 8 multip. double 73 40907776 1024 4 63 10 multip. text packed stripped 5 48097280 1024 5 167 2 multip. unsigned short 4840 55200768 1024 6 177 4 multip. unsigned long 1346 65145856 1024 7 155 4 multip. text 4995 75090944 1024 8 138 4 multip. unsigned long 87 85036032 1024 9 177 4 multip. unsigned long 178 96481280 1024 193 1 text
myisamchk -eis の出力例
Checking MyISAM file: company Key: 1: Keyblocks used: 97% Packed: 0% Max levels: 4 Key: 2: Keyblocks used: 98% Packed: 50% Max levels: 4 Key: 3: Keyblocks used: 97% Packed: 0% Max levels: 4 Key: 4: Keyblocks used: 99% Packed: 60% Max levels: 3 Key: 5: Keyblocks used: 99% Packed: 0% Max levels: 3 Key: 6: Keyblocks used: 99% Packed: 0% Max levels: 3 Key: 7: Keyblocks used: 99% Packed: 0% Max levels: 3 Key: 8: Keyblocks used: 99% Packed: 0% Max levels: 3 Key: 9: Keyblocks used: 98% Packed: 0% Max levels: 4 Total: Keyblocks used: 98% Packed: 17% Records: 1403698 M.recordlength: 226 Packed: 0% Recordspace used: 100% Empty space: 0% Blocks/Record: 1.00 Record blocks: 1403698 Delete blocks: 0 Recorddata: 317235748 Deleted data: 0 Lost space: 0 Linkdata: 0 User time 1626.51, System time 232.36 Maximum resident set size 0, Integral resident set size 0 Non physical pagefaults 0, Physical pagefaults 627, Swaps 0 Blocks in 0 out 0, Messages in 0 out 0, Signals 0 Voluntary context switches 639, Involuntary context switches 28966
myisamchk -eiv の出力例
Checking MyISAM file: company
Data records: 1403698 Deleted blocks: 0
- check file-size
- check delete-chain
block_size 1024:
index 1:
index 2:
index 3:
index 4:
index 5:
index 6:
index 7:
index 8:
index 9:
No recordlinks
- check index reference
- check data record references index: 1
Key: 1: Keyblocks used: 97% Packed: 0% Max levels: 4
- check data record references index: 2
Key: 2: Keyblocks used: 98% Packed: 50% Max levels: 4
- check data record references index: 3
Key: 3: Keyblocks used: 97% Packed: 0% Max levels: 4
- check data record references index: 4
Key: 4: Keyblocks used: 99% Packed: 60% Max levels: 3
- check data record references index: 5
Key: 5: Keyblocks used: 99% Packed: 0% Max levels: 3
- check data record references index: 6
Key: 6: Keyblocks used: 99% Packed: 0% Max levels: 3
- check data record references index: 7
Key: 7: Keyblocks used: 99% Packed: 0% Max levels: 3
- check data record references index: 8
Key: 8: Keyblocks used: 99% Packed: 0% Max levels: 3
- check data record references index: 9
Key: 9: Keyblocks used: 98% Packed: 0% Max levels: 4
Total: Keyblocks used: 9% Packed: 17%
- check records and index references
*** LOTS OF ROW NUMBERS DELETED ***
Records: 1403698 M.recordlength: 226 Packed: 0%
Recordspace used: 100% Empty space: 0% Blocks/Record: 1.00
Record blocks: 1403698 Delete blocks: 0
Recorddata: 317235748 Deleted data: 0
Lost space: 0 Linkdata: 0
User time 1639.63, System time 251.61
Maximum resident set size 0, Integral resident set size 0
Non physical pagefaults 0, Physical pagefaults 10580, Swaps 0
Blocks in 4 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 10604, »
Involuntary context switches 122798
次の説明において、myisamchk が生成する情報のタイプについて説明します。「Keyfile」 とはインデックス ファイルのことです。「Record」 と 「row」 はシノニムです。
MyISAM file
MyISAM
(インデックス)
ファイルの名前
File-version
MyISAM
フォーマットのバージョン。現在は常に
2。
Creation time
データ ファイルの作成日時。
Recover time
インデックスまたはデータ ファイルを前回再構築した日時。
Data records
テーブル内のレコード数。
Deleted blocks
予約済み領域 (リザーブ) を占有している削除済み (デリート) のブロック数。 テーブルの最適化には、この領域を最小にする。項4.9.4.4. 「テーブルの最適化」 を参照のこと。
Datafile parts
動的フォーマットに対して、存在するデータ
ブロック数。断片化レコードがない最適化テーブルに対する
Data records
と同じ。
Deleted data
領域を解放していない削除済みデータのバイト数。テーブルの最適化には、この領域を最小にする。項4.9.4.4. 「テーブルの最適化」 を参照のこと。
Datafile pointer
データ ファイル ポインタのサイズ(バイト単位)。2、3、4、5 バイトのどれか。通常は 2 バイトで足りるが、現在のところ、MySQL で制御することはできない。固定テーブルでは、レコード アドレスのこと。動的テーブルでは、バイト アドレスのこと。
Keyfile pointer
インデックス ファイル ポインタのサイズ(バイト単位)。1、2、3 バイトのどれか。通常のテーブルは 2 バイトで足りるが、MySQL で自動的に計算する。常にブロック アドレスのこと。
Max datafile length
テーブルのデータ ファイル(.MYD ファイル)の最大長(バイト単位)。
Max keyfile length
テーブルのインデックス ファイル(.MYD ファイル)の最大長(バイト単位)。
Recordlength
それぞれのレコードで使用する領域サイズ(バイト単位)。
Record format
テーブル レコードの格納形式。
上記の例では Fixed length
を使用。 他に、Compressed
および Packed
がある。
table description
テーブル内のすべてのキーの一覧。myisamchk コマンドで、それぞれのキーの低レベル情報を表示する。内容は次の通り。
Key
キー番号。
Start
インデックス部が始まるレコード内の位置。
Len
インデックス部の長さ。パック数値の場合、これは常にそのカラムの全長となる。文字列の場合、文字列カラムのプリフィックスをインデックスにできるため、インデックス化したカラムの全長よりも短くなることがある。
Index
unique
または
multip.
(複数)。このインデックスで値の重複が認められているか
(在るか) どうかを示す。
Type
インデックス部のデータ型。packed
、stripped
、または
empty
のいずれかの
ISAM
データ型。
Root
ルート インデックス ブロックのアドレス。
Blocksize
それぞれのインデックス ブロックのサイズ。デフォルトでは 1024 であるが、MySQLをソースから組む場合、コンパイル時に変更可能。
Rec/key
オプティマイザで使用する統計値。このインデックスのキー値ごとのレコード数を示す。ユニーク キーの値は常に 1。これは、myisamchk -a で、テーブルをロード(または大きく変更)すると更新する。更新しない場合は、デフォルト値の 30 のまま。
(1 番目と 2 番目の)
出力例示のテーブルに、table
description
の 9 番目のキーが 2
つある。これは、2 パートを持つマルチ
パート キー であることを示す。
Keyblocks used
使用しているキー ブロックのパーセント。例で使用しているテーブルは myisamchk で再構成したばかりであるため、値が非常に高い(理論的最大値に非常に近い)。
Packed
MySQL
がキー間で共通するサフィックスの部分をパックした割合。これは、CHAR
と VARCHAR
のカラム
キーにのみ使用可能。名前のような長い文字列では、MySQLがパックして使用領域を大きく減らす。たとえば、3
番目の出力例示の、4 番目のキーは、10
文字長 (100%) であるのに対して、領域を 60 %
パックした (6割減) という意味。
Max levels
このキーの B-tree の深さ。長いキーがある大きなテーブルでは、値が高くなる。
Records
テーブル内のレコード数。
M.recordlength
レコードの平均の長さ。固定長レコードのテーブルでは、これは実際のレコード長となる。
Packed
MySQLが節約したパーセント。Packed
値 (%) は、MySQL が文字列の最後 (suffix)
を削除してできたスペース。
Recordspace used
使用してデータ ファイルのパーセント。
Empty space
使用していないデータ ファイルのパーセント。
Blocks/Record
レコードごとの平均ブロック数(断片化レコードを構成するリンク数)。これは、固定形式テーブルでは常に 1.0。この値は可能な限り、1.0 に近くしておく。大きくなりすぎた場合は、myisamchk で再編成する。項4.9.4.4. 「テーブルの最適化」 を参照のこと。
Recordblocks
使用しているブロック(リンク)数。固定形式では、レコード数と同じになる。
Deleteblocks
削除したブロック(リンク)数。
Recorddata
使用しているデータ ファイルのバイト数。
Deleted data
削除した(使用していない)データ ファイルのバイト数。
Lost space
失った領域の合計バイト数。レコード長さを短くして更新した場合の、短くなった領域分。
Linkdata
ポインタが使用しているストレージ量の合計
(これを Linkdata
値
と呼ぶ)。動的テーブルの場合、レコード断片をポインタでリンクしている(それぞれ
4 から 7 バイト)。
テーブルを myisampackで圧縮している場合は、myisamchk -d を実行すると、それぞれのテーブル カラムに関する追加情報を出力します。この情報の詳細は 項7.6. 「myisampack — 圧縮された、読み取り専用MyISAM テーブルを作成する。」 を参照してください。