|
|
 |
連載
SQL
MySQLでのデータの最適化 |
|
1.状況
索引編成ファイル(ISAMファイル)から発展したリレーショナルデータベース(MySQLのデフォルトは MyISAM型)では、
データの挿入・削除を繰り返していくうちにだんだんと無駄な領域が増えていきます。
インデックス速度を最優先すると1件のデータを挿入するだけで倍以上に容量が増える場合もあります。
削除はインデックスのアドレスチェーンを繋ぎ変えるだけですから、実領域はそのまま残ります。
速度優先か容量優先かでそのままの方がいい場合もありますが、初回のみ頻繁な更新を行い、あとは殆ど参照のみというのであれば、
これらの無駄な領域は削除し、整理整頓した方がいいと思います。
MySQLではこのような最適化を、用意されたコマンドで実行することができます。
またこのコマンドにはデータの検査・修復も兼ねていますので、アクセスエラーを起こす場合には再作成する前に試してみる必要があります。
|
2.データの最適化
それでは簡単な手順を示します。最適化を行う前にMySQLサーバは停止させておく必要があります。
MySQLのデータベースはデフォルトで c:\mysql\data 配下のデータベース名のフォルダの下に作成されます。
ここではデータベース名:myBBS テーブル名:topic を最適化します。
(topic.frm(定義体) topic.MYD(実データ) topic.MYI(インデックス))
実行後、実データの容量を調べて下さい!
|
 |
| |
1: C:\>cd mysql\bin
2: C:\mysql\bin>
3:
4: C:\mysql\bin>myisamchk -r c:\mysql\data\myBBS\topic.MYI
5: - recovering (with sort) MyISAM-table 'c:\mysql\data\myBBS\topic.MYI'
6: Welcome to the MySQL monitor. Commands end with ; or \g.
7: Data records: 82
8: - Fixing index 1
9:
10: C:\mysql\bin>
|
|
| コマンドプロンプト(データの最適化) 注) 連番は説明用で実際にはありません |
|
1行目 :MySQLの実行ファイルのある場所に移動する。
4行目 :最適化のコマンドを起動する。(対象のインデックスを指定する。)
5行目 :MyISAM型の対象テーブルを修復していることを示す。
7行目 :対象データの件数 (82件)
8行目 :1つのインデックスでデータを圧縮したことを示す。
|
|
|