サーバと通信する mysqlclient
ライブラリを使用している全ての
MySQL クライアントは次の環境変数を使用します:
Name | Description |
MYSQL_UNIX_PORT | デフォルトのソケット; localhost への接続に使用される
|
MYSQL_TCP_PORT | デフォルトの TCP/IP ポート |
MYSQL_PWD | デフォルトのパスワード |
MYSQL_DEBUG | デバッグオプション |
TMPDIR | 一時 tables/files が作成されるディレクトリ |
MYSQL_PWD
の使用は安全ではありません。
「6.5 MySQL サーバーに接続」節参照.
`mysql' クライアントは、MYSQL_HISTFILE
環境変数に
指定されているファイルにコマンドラインの履歴を書き出します。
デフォルトの履歴ファイルは、 `$HOME/.mysql_history' で、$HOME
は
HOME
環境変数の値です。 「A Environment variables」節参照.
全ての MySQL プログラムは多くの様々なオプションを持ちます。種々
のオプションの完全な説明を得るにはスイッチ --help
を使用してください。例
えばmysql --help
を試してください。
オプションファイルで、全ての標準クライアントのデフォルトのオプションを
変更することが可能です。
「4.15.4 オプションファイル ( my.cnf
)」節.
MySQL プログラムを以下に示します:
myisamchk
myisamchk
には多くの機能があるので、一章割り当てて説明しています。
「15 Maintaining a MySQL installation」節参照.
make_binary_release
ftp.tcx.se
の `/pub/mysql/Incoming'
に送ることができます。
msql2mysql
mSQL
プログラムを MySQL に変換するシェルスクリプト。全て
のケースで処理できるわけではありませんが、変換時に良いスタートを与えます。
mysql
mysql
は簡単な SQL シェル (GNU readline
つき) です。これは対話的な使用や
非対話型問い合わせをサポートします。対話的に使用されると、ASCII テーブル
形式で結果が与えられます。フィルタとして使用されると、出力はタブで区切ら
れます(これは起動時のオプションで他のものに変更できます)。
あなたは以下のように簡単にスクリプトを実行できます:
shell> mysql database < script.sql > output.tabクライアントのメモリが十分でないことによる問題がある場合は、
--quick
スイッチを使用してください! これは結果を取り出すのに
mysql_store_result()
の代わりに mysql_use_result()
を使用
するように mysql
に強制させます。
mysqlaccess
mysqladmin
mysqladmin
)」節参照.
mysqlbug
mysqld
mysqldump
mysqldump
)」節参照.
mysqlimport
LOAD
DATA INFILE
でサポートされる全ての形式を使用できます。 「14.5 テキストファイルからデータを取り込む ( mysqlimport
)」節参照.
mysqlshow
mysql_install_db
replace
msql2mysql
で使用されるバイナリ。ファイル内または標準入力上の文字列を変
換するユーティリティプログラム。より長い文字列に最初に適合するため有限状
態マシンを使用します。文字列を交換するために使用できます。例えば、
a
と b
を与えられたファイル内で交換します:
shell> replace a b b a -- file1 file2 ...
safe_mysqld
mysqld
デーモンをいくつかの安全な機能で開始します。エラー時には再起動し、
実行時情報をログファイルへ記入します。
mysql
)
mysql
はシンプルな SQL shell です(GNU readline
を持っています).
これは対話モードと、非対話モードを持っています。 対話モードで使用された場合、
クエリの結果は ASCII テーブルのフォーマットで与えられます。
非対話モードで使用された場合(例えばフィルターとして)、結果はタブ区切りの
フォーマットで返ります。
(出力フォーマットはコマンドラインのオプションで変更できます)
以下のようにしてスクリプトを実行できます:
shell> mysql database < script.sql > output.tab
もしクライアントでメモリー不足の問題が出た場合、--quick
オプションを
使用します! これは mysql
に、結果セットを取得する際に、
mysql_store_result()
ではなく mysql_use_result()
を
使用させます。
mysql
の使用はとても簡単です:
mysql database
や mysql --user=user_name --password=your_password d
atabase
のようにしてはじめます。
SQL 文を入力し、一文を `;', `\g' or `\G' で終え、
return/enter を押します。
mysql
は以下のオプションをサポートします:
-?, --help
-A, --no-auto-rehash
mysql
の起動を速くします。
-B, --batch
-C, --compress
-#, --debug[=...]
-D, --database=..
my.cnf
ファイルが便利です
-e, --execute=...
-E, --vertical
\G
で終了した場合、同じように垂直に出力します。
-f, --force
-i, --ignore-space
-h, --host=...
-H, --html
-L, --skip-line-numbers
-n, --unbuffered
-N, --skip-column-names
-O, --set-variable var=option
--help
lists variables
-o, --one-database
-p[password], --password[=...]
-p
を使用する場合、このオプションとパスワードの間には
スペースが不要だということに注意してください。
-P --port=...
-q, --quick
-r, --raw
--batch
とともに使用されます
-s, --silent
-S --socket=...
-t --table
-T, --exit-info
-u, --user=#
-U, --safe-updates[=#], --i-am-a-dummy[=#]
UPDATE
and DELETE
のみを行います。
これは後述します。 このオプションをもし my.cnf
に書いている場合は、
--safe-updates=0
でこのオプションをリセットできます。
-v, --verbose
-V, --version
-w, --wait
もしコマンドラインで 'help' と打った場合、mysql
はサポートする
コマンドを表示します:
mysql> help MySQL commands: help (\h) Display this text ? (\h) Synonym for `help' clear (\c) Clear command connect (\r) Reconnect to the server. Optional arguments are db and host edit (\e) Edit command with $EDITOR exit (\q) Exit mysql. Same as quit go (\g) Send command to mysql server ego (\G) Send command to mysql server; Display result vertically print (\p) Print current command quit (\q) Quit mysql rehash (\#) Rebuild completion hash source (\.) Execute a SQL script file. Takes a file name as an argument status (\s) Get status information from the server use (\u) Use another database. Takes database name as argument
status
コマンドは、今使用している
接続とサーバーについての情報をいくつか表示します。
もし --safe-updates
モードで使用している場合、 status
は
あなたのクエリに影響する mysql
変数の値を表示します。
初心者に便利な起動オプション(MySQL 3.23.11 で導入されました)は、
--safe-mode
(あるいは --i-am-a-dummy
) で、
これは DELETE FROM table_name
を WHERE
節を忘れて
実行しようとした場合のためにあります。
このオプションが使用されると、 mysql
は接続時に MySQL サーバーに
以下のようなコマンドを送ります:
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=#select_limit#, SQL_MAX_JOIN_SIZE=#max_join_size#"
ここで #select_limit#
と #max_join_size#
は変数で
これらは mysql
コマンドからセット可能です。
「7.28 SET OPTION
構文」節参照.
この効果は:
WHERE
節でキーを使用していなければ、UPDATE
や DELETE
は許可されません。 しかし、 LIMIT
を使用すれば UPDATE/DELETE
を
強制実行できます:
UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
#select_limit#
レコードまでに抑えられます。
#max_join_size
以上の行を必要とするであろう SELECT
は
中断されます。
mysqladmin
)管理オペレーションを実行するためのユーティリティ。シンタックスは:
shell> mysqladmin [OPTIONS] command [command-option] command ...
mysqladmin --help
によって、オプションの一覧を手にいれることができます。
現在の mysqladmin
は以下のコマンドをサポートします:
create databasename | データベースの作成 |
drop databasename | データベースとテーブルの全削除。 |
extended-status | サーバーから拡張ステータスを取得。 |
flush-hosts | キャッシュされている全ホストをフラッシュ。 |
flush-logs | 全てのログをフラッシュ |
flush-tables | 全てのテーブルをフラッシュ |
flush-privileges | 許可テーブルの再読み込み (reload と同じ) |
kill id,id,... | mysql スレッドの kill. |
password new-password | 古いパスワードを new-password に変更 |
ping | mysqld が生きているかチェック |
processlist | 現在活動中の mysql スレッドを表示 |
reload | 許可テーブルの再読み込み |
refresh | 全テーブルをフラッシュし、ログファイルを一度閉じて開きます。 |
shutdown | サーバーをダウンさせます。 |
slave-start | Start slave replication thread |
slave-stop | Stop slave replication thread |
status | サーバーから短いステータスを得ます。 |
variables | 変数の表示 |
version | サーバーからバージョンを得ます。 |
全てのコマンドは、ユニークなプレフィックスで省略可能です。 例えば:
shell> mysqladmin proc stat +----+-------+-----------+----+-------------+------+-------+------+ | Id | User | Host | db | Command | Time | State | Info | +----+-------+-----------+----+-------------+------+-------+------+ | 6 | monty | localhost | | Processlist | 0 | | | +----+-------+-----------+----+-------------+------+-------+------+ Uptime: 10077 Threads: 1 Questions: 9 Slow queries: 0 Opens: 6 Flush tables: 1 Open tables: 2 Memory in use: 1092K Max memory used: 1116K
mysqladmin status
コマンドの結果は、以下の項目を持ちます:
Uptime | MySQL サーバーの起動秒数 |
Threads | 稼働中のスレッド数 (clients) |
Questions | mysqld が開始してからのクライアントからのクエリ数
|
Slow queries | long_query_time 秒より時間のかかったクエリの数
|
Opens | mysqld が開いたテーブル数
|
Flush tables | flush ... , refresh and reload コマンドの実行回数
|
Open tables | 現在開かれているテーブルの数 |
Memory in use | mysqld のコードによって直接割り当てられたメモリ (only available when MySQL is compiled with --with-debug) |
Max memory used | mysqld のコードによって直接割り当てられる最大メモリー量 (only available when MySQL is compiled with --with-debug) |
If you do myslqadmin shutdown
on a socket (in other words, on a
the computer where mysqld
is running), mysqladmin
will
wait until the MySQL
pid-file
is removed to ensure that
the mysqld server
has stopped properly.
mysqldump
)データベース、あるいは、 バックアップ、他のSQLサーバーへのデータを移動を目的としたデータのまとまり、 これらをダンプするためのユーティリティ。 ダンプは、テーブルの作成のための SQL 文を含みます。
shell> mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS]
もしテーブルを指定せず、--databases
や --all-databases
を
使用しなかったなら、データベースの全てのテーブルがダンプされます。
mysqldump --help
によって、オプションの一覧を手にいれることができます。
もし mysqldump
を --quick
や --opt
なしで実行するならば、
mysqldump
は結果を表示する前に、結果をメモリに全てロードすることに
注意してください。
これは大きなデータベースをダンプする際に問題になるでしょう。
mysqldump
は以下のオプションをサポートします:
--add-locks
LOCK TABLES
文を追加し、
テーブルのダンプ後に UNLOCK TABLE
文を追加します。
( あとで MySQL に挿入するときにこれは速くなります ).
--add-drop-table
drop table
文を追加します。
-A, --all-databases
--databases
with all
databases selected.
-a, --all
--allow-keywords
-c, --complete-insert
-C, --compress
-B, --databases
USE db_name;
will be included in the output before each new database.
--delayed
INSERT DELAYED
コマンドを使用してレコードを INSERT します。
-e, --extended-insert
INSERT
構文を使用します。(これはあとで挿入する際、
よりコンパクトかつ速くなります。)
-#, --debug[=option_string]
--help
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...
-T
とともに使用され、
LOAD DATA INFILE
と同様の意味をなします。
「7.18 LOAD DATA INFILE
構文」節参照.
-F, --flush-logs
-f, --force,
-h, --host=..
localhost
.
-l, --lock-tables.
READ LOCAL
to allow concurrent inserts in the case of MyISAM
tables.
-n, --no-create-db
-t, --no-create-info
CREATE TABLE
文) を書き出しません。
-d, --no-data
--opt
--quick --add-drop-table --add-locks --extended-insert --lock-tables
と同じ.
MySQL サーバーから読み出す時間を最短にしてくれます。
-pyour_pass, --password[=your_pass]
mysqldump
は端末からパスワードを読み取ろうとします。
-P port_num, --port=port_num
localhost
以外のホストへの接続に使用されます。
localhost
の場合は、Unix ソケットが使用されます。)
-q, --quick
mysql_use_result()
をこれに使用しています。
-S /path/to/socket, --socket=/path/to/socket
localhost
に接続する際のソケットファイルの指定 (デフォルトは /tmp/mysql.sock )
--tables
-T, --tab=path-to-some-directory
table_name.sql
ファイル、
データを含む table_name.txt
ファイルを作成します。
NOTE:
これは mysqld
デーモンが走っているマシン上で mysqldump
を
実行する場合にだけ、動作します。
.txt
ファイルのフォーマットは、
--fields-xxx
と --lines--xxx
オプションに従います。
-u user_name, --user=user_name
-O var=option, --set-variable var=option
-v, --verbose
-V, --version
-w, --where='where-condition'
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
-O net_buffer_length=#, where # < 24M
--extended-insert
or --opt
), mysqldump
will create
rows up to net_buffer_length
length. If you increase this
variable, you should also ensure that the max_allowed_packet
variable in the MySQL server is bigger than the
net_buffer_length
.
mysqldump
の普通の使用はデータベースのバックアップでしょう。 「21.2 データベースのバックアップ」節参照.
mysqldump --opt database > backup-file.sql
他の MySQL サーバーへデータベースをコピーする場合にも便利です:
mysqldump --opt database | mysql --host=remote-host -C database
It is possible to dump several databases with one command.
mysqldump --databases database1 [database2 database3...] > my_databases.sql
If all the databases are wanted, one can use:
mysqldump --all-databases > all_databases.sql
mysqlimport
)
mysqlimport
は、LOAD DATA INFILE
SQL 構文を、
コマンドラインインターフェースで提供します。
mysqlimport
のオプションのほとんどが、
LOAD DATA INFILE
への同じオプションに対応します。
「7.18 LOAD DATA INFILE
構文」節参照.
mysqlimport
の実行は以下のようにします:
shell> mysqlimport [options] database textfile1 [textfile2....]
mysqlimport
は、コマンドラインの引数に与えられたファイル名の拡張子を取り、
拡張子を取った後の名前を、ファイルの内容を取り込むテーブルの名前とします。
例えば、`patient.txt', `patient.text', `patient' という
ファイルは全て、patient
とという名前のテーブルに取り込まれます。
mysqlimport
は以下のオプションをサポートします:
-C, --compress
-#, --debug[=option_string]
-d, --delete
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...
LOAD DATA INFILE
の対応する文節と同じ意味になります。
「7.18 LOAD DATA INFILE
構文」節参照.
-f, --force
--force
がなければ、
テーブルがなければ mysqlimport
は終了します。
--help
-h host_name, --host=host_name
localhost
.
-i, --ignore
--replace
オプションの説明を見てください。
-l, --lock-tables
-L, --local
localhost
に接続した場合、テキストファイルは
サーバー上にあると仮定されます。(localhost
はデフォルト値)
-pyour_pass, --password[=your_pass]
mysqlimport
は端末からのパスワードの入力を要求します。
-P port_num, --port=port_num
localhost
を除くホストへの接続に使用します。
localhost
へは、UNIX ソケットを使用します。)
-r, --replace
--replace
と --ignore
オプションは、
入力されているレコードのユニークキーの値が、
既に存在しているレコードのユニークキーの値と同じ場合、
その入力されているデータの取り扱いを決定します。
もし --replace
が指定されているなら、
既にあるレコードは新しく読まれたレコードに置き換えられます。
もし --ignore
が指定されているなら、
入力された物は無視されます。
どちらのオプションも指定していない場合、
キーの値が重なっているとエラーを発し、
テキストファイルの残りの部分は無視されます。
-s, --silent
-S /path/to/socket, --socket=/path/to/socket
localhost
への接続時に使用するソケットファイルを指定します。
-u user_name, --user=user_name
-v, --verbose
-V, --version
Here follows a sample run of using mysqlimport
:
$ mysql --version mysql Ver 9.33 Distrib 3.22.25, for pc-linux-gnu (i686) $ uname -a Linux xxx.com 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknown $ mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test $ ed a 100 Max Sydow 101 Count Dracula . w imptest.txt 32 q $ od -c imptest.txt 0000000 1 0 0 \t M a x S y d o w \n 1 0 0000020 1 \t C o u n t D r a c u l a \n 0000040 $ mysqlimport --local test imptest.txt test.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0 $ mysql -e 'SELECT * FROM imptest' test +------+---------------+ | id | n | +------+---------------+ | 100 | Max Sydow | | 101 | Count Dracula | +------+---------------+
mysqlshow
)
mysqlshow
can be used to quickly look at which databases exists and
their tables and the tables columns.
With the mysql
program you can get the same information with the
SHOW
commands. 「7.23 SHOW
構文 (テーブルやフィールドなどについての情報を得る)」節参照.
mysqlshow
is invoked like this:
shell> mysqlshow [OPTIONS] [database [table [column]]]
Note that in newer MySQL versions you only see those database/tables/columns on which you have some privilege.
If last argument contains a shell or SQL wildcard (*
, ?
,
%
or _
) then only what's matched by the wildcard is shown.
This may cause some confusion when you try to display the columns for a
table with a _
as in this case mysqlshow
only shows you
the table names that matches the pattern. This is easily fixed by
adding an extra %
last on the command line (as a separate
argument).
myisampack
・ pack_isam
)
myisampack
is used to compress MyISAM tables and pack_isam
is used to compress ISAM tables. Because ISAM tables are deprecated, we
will only discuss myisampack
here.
myisampack
は、
1 MySQL ライセンス以上または MySQL サポートを注文した時に得
られる特別なユーテリティです。これらはバイナリだけの配布のため、
いくつかのプラットフォーム上でだけに有効です。
In the following we only talk about myisampack
, but everything
holds also for pack_isam
.
myisampack
はテーブル内の各項目を別々に圧縮するように働きます。展開のため
の情報は、テーブルがオープンされた時にメモリに読まれます。これは、正確に1レコー
ドだけを展開する必要があるような、個々のレコードへのアクセス時にとても良
い性能を与えます。MSDOS 上の Stacker 使用時のように、ディスクブロックは
そんなに大きくありません。
通常、myisampack
はデータファイルを 40~70% にパックします。
MySQL は圧縮されたテーブルでメモリマップ (mmap()
) を使用します。
mmap()
が働かない場合は、通常のファイルの読み書きを使用します。
現在 myisampack
には2つの制限があります:
myisampack
can also pack BLOB
or TEXT
columns. The
older pack_isam
could not do this.
これらの制限の修正は TODO にありますが、優先度は低いです。
myisampack
は以下のようにして起動します:
shell> myisampack [options] filename ...
それぞれのファイル名はインデックスファイル(`.MYI')の名前です。 もしデータディレクトリにカレントディレクトリを移動していないなら、 ファイルのパスを指定しなくてはなりません。`.MYI' 拡張子は 省略することが可能です。
myisampack
は以下のオプションをサポートします:
-b, --backup
tbl_name.OLD
としてバックアップを作成します.
-#, --debug=debug_options
debug_options
は 'd:t:o,filename'
.
-f, --force
myisampack
はテーブルを圧縮している間、
一時ファイルを `tbl_name.TMD' という名前で作成します。
もし myisampack
を途中で kill した場合、 `.TMD' ファイルが消されて
いない事があります。通常、myisampack
は `tbl_name.TMD' ファイルが
既に存在する場合はエラーで終了します。 --force
を使用すると、
myisampack
はそのような場合でもテーブルをパックします。
-?, --help
-j big_tbl_name, --join=big_tbl_name
big_tbl_name
一つに
まとめます。結合される全てのテーブル定義は同じでなければなりません
(同じ項目名、同じ項目型、同じインデックス、等)
-p #, --packlength=#
myisampack
stores all rows with length pointers of 1, 2 or 3
bytes. In most normal cases, myisampack
can determine the right length
value before it begins packing the file, but it may notice during the packing
process that it could have used a shorter length. In this case,
myisampack
will print a note that the next time you pack the same file,
you could use a shorter record length.)
-s, --silent
-t, --test
-T dir_name, --tmp_dir=dir_name
-v, --verbose
-V, --version
-w, --wait
mysqld
server was invoked with the --skip-locking
option, it is not a good idea to invoke myisampack
if the table might
be updated during the packing process.
The sequence of commands shown below illustrates a typical table compression session:
shell> ls -l station.* -rw-rw-r-- 1 monty my 994128 Apr 17 19:00 station.ISD -rw-rw-r-- 1 monty my 53248 Apr 17 19:00 station.ISM -rw-rw-r-- 1 monty my 994128 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 53248 Apr 17 19:00 station.MYI -rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell> myisamchk -dvv station MyISAM file: station Isam-version: 2 Creation time: 1996-03-13 10:08:58 Recover time: 1997-02-02 3:06:43 Data records: 1192 Deleted blocks: 0 Datafile: Parts: 1192 Deleted data: 0 Datafile pointer (bytes): 2 Keyfile pointer (bytes): 2 Max datafile length: 54657023 Max keyfile length: 33554431 Recordlength: 834 Record format: Fixed length table description: Key Start Len Index Type Root Blocksize Rec/key 1 2 4 unique unsigned long 1024 1024 1 2 32 30 multip. text 10240 1024 1 Field Start Length Type 1 1 1 2 2 4 3 6 4 4 10 1 5 11 20 6 31 1 7 32 30 8 62 35 9 97 35 10 132 35 11 167 4 12 171 16 13 187 35 14 222 4 15 226 16 16 242 20 17 262 20 18 282 20 19 302 30 20 332 4 21 336 4 22 340 1 23 341 8 24 349 8 25 357 8 26 365 2 27 367 2 28 369 4 29 373 4 30 377 1 31 378 2 32 380 8 33 388 4 34 392 4 35 396 4 36 400 4 37 404 1 38 405 4 39 409 4 40 413 4 41 417 4 42 421 4 43 425 4 44 429 20 45 449 30 46 479 1 47 480 1 48 481 79 49 560 79 50 639 79 51 718 79 52 797 8 53 805 1 54 806 1 55 807 20 56 827 4 57 831 4 shell> myisampack station.MYI Compressing station.MYI: (1192 records) - Calculating statistics normal: 20 empty-space: 16 empty-zero: 12 empty-fill: 11 pre-space: 0 end-space: 12 table-lookups: 5 zero: 7 Original trees: 57 After join: 17 - Compressing file 87.14% shell> ls -l station.* -rw-rw-r-- 1 monty my 127874 Apr 17 19:00 station.ISD -rw-rw-r-- 1 monty my 55296 Apr 17 19:04 station.ISM -rw-rw-r-- 1 monty my 127874 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 55296 Apr 17 19:04 station.MYI -rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell> myisamchk -dvv station MyISAM file: station Isam-version: 2 Creation time: 1996-03-13 10:08:58 Recover time: 1997-04-17 19:04:26 Data records: 1192 Deleted blocks: 0 Datafile: Parts: 1192 Deleted data: 0 Datafilepointer (bytes): 3 Keyfile pointer (bytes): 1 Max datafile length: 16777215 Max keyfile length: 131071 Recordlength: 834 Record format: Compressed table description: Key Start Len Index Type Root Blocksize Rec/key 1 2 4 unique unsigned long 10240 1024 1 2 32 30 multip. text 54272 1024 1 Field Start Length Type Huff tree Bits 1 1 1 constant 1 0 2 2 4 zerofill(1) 2 9 3 6 4 no zeros, zerofill(1) 2 9 4 10 1 3 9 5 11 20 table-lookup 4 0 6 31 1 3 9 7 32 30 no endspace, not_always 5 9 8 62 35 no endspace, not_always, no empty 6 9 9 97 35 no empty 7 9 10 132 35 no endspace, not_always, no empty 6 9 11 167 4 zerofill(1) 2 9 12 171 16 no endspace, not_always, no empty 5 9 13 187 35 no endspace, not_always, no empty 6 9 14 222 4 zerofill(1) 2 9 15 226 16 no endspace, not_always, no empty 5 9 16 242 20 no endspace, not_always 8 9 17 262 20 no endspace, no empty 8 9 18 282 20 no endspace, no empty 5 9 19 302 30 no endspace, no empty 6 9 20 332 4 always zero 2 9 21 336 4 always zero 2 9 22 340 1 3 9 23 341 8 table-lookup 9 0 24 349 8 table-lookup 10 0 25 357 8 always zero 2 9 26 365 2 2 9 27 367 2 no zeros, zerofill(1) 2 9 28 369 4 no zeros, zerofill(1) 2 9 29 373 4 table-lookup 11 0 30 377 1 3 9 31 378 2 no zeros, zerofill(1) 2 9 32 380 8 no zeros 2 9 33 388 4 always zero 2 9 34 392 4 table-lookup 12 0 35 396 4 no zeros, zerofill(1) 13 9 36 400 4 no zeros, zerofill(1) 2 9 37 404 1 2 9 38 405 4 no zeros 2 9 39 409 4 always zero 2 9 40 413 4 no zeros 2 9 41 417 4 always zero 2 9 42 421 4 no zeros 2 9 43 425 4 always zero 2 9 44 429 20 no empty 3 9 45 449 30 no empty 3 9 46 479 1 14 4 47 480 1 14 4 48 481 79 no endspace, no empty 15 9 49 560 79 no empty 2 9 50 639 79 no empty 2 9 51 718 79 no endspace 16 9 52 797 8 no empty 2 9 53 805 1 17 1 54 806 1 3 9 55 807 20 no empty 3 9 56 827 4 no zeros, zerofill(2) 2 9 57 831 4 no zeros, zerofill(1) 2 9
The information printed by myisampack
is described below:
normal
empty-space
empty-zero
empty-fill
INTEGER
column may be changed to MEDIUMINT
).
pre-space
end-space
table-lookup
ENUM
before Huffman compression.
zero
Original trees
After join
After a table has been compressed, myisamchk -dvv
prints additional
information about each field:
Type
constant
no endspace
no endspace, not_always
no endspace, no empty
table-lookup
ENUM
.
zerofill(n)
n
bytes in the value are always 0 and are not
stored.
no zeros
always zero
Huff tree
Bits
After you have run pack_isam
/myisampack
you must run
isamchk
/myisamchk
to recreate the index. At this time you
can also sort the index blocks and create statistics that is needed for
the MySQL optimizer to work more efficiently.
myisamchk -rq --analyze --sort-index table_name.MYI isamchk -rq --analyze --sort-index table_name.ISM
After you have installed the packed table into the MySQL database
directory you should do mysqladmin flush-tables
to force mysqld
to start using the new table.
Go to the first, previous, next, last section, table of contents.