MySQL 5.1 リファレンスマニュアル :: 12 SQL ステートメント構文 :: 12.5 データベース管理ステートメント :: 12.5.2 テーブル メンテナンス ステートメント :: 12.5.2.5 OPTIMIZE TABLE 構文
« 12.5.2.4 CHECKSUM TABLE 構文

12.5.2.6 REPAIR TABLE 構文 »
Section Navigation      [Toggle]
  • 12.5.2 テーブル メンテナンス ステートメント
  • 12.5.2.1 ANALYZE TABLE 構文
  • 12.5.2.2 BACKUP TABLE 構文
  • 12.5.2.3 CHECK TABLE 構文
  • 12.5.2.4 CHECKSUM TABLE 構文
  • 12.5.2.5 OPTIMIZE TABLE 構文
  • 12.5.2.6 REPAIR TABLE 構文
  • 12.5.2.7 RESTORE TABLE 構文

12.5.2.5. OPTIMIZE TABLE 構文

OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

もしテーブルの大部分を削除したり、変数長行で何箇所もテーブルを変更した場合は(VARCHAR、VARBINARY、BLOB、または TEXT カラムを持つテーブル)、OPTIMIZE TABLE を利用しなければいけません。

削除された行はリンクされたリスト内で保存され、後続の INSERT 操作は古い行の位置を再利用します。使用されていないスペースの再要求をし、データ ファイルをデフラグするには OPTIMIZE TABLE を利用する事ができます。

このステートメントはテーブルに SELECT と INSERT 権限を要求します。

ほとんどの設定で、OPTIMIZE TABLE を利用する必要は全くありません。可変長行の更新を頻繁にするとしても、特定のテーブルに対してだけ、この作業を週に一度、または月に一度以上する必要はありません。

OPTIMIZE TABLE は MyISAM と InnoDB テーブルに対して のみ 機能します。これは、NDB ディスク データ テーブルを含むその他のストレージ エンジンを利用して作成されたテーブルには機能 しません。

MyISAM テーブルに対しては、OPTIMIZE TABLE は次のように機能します。

  1. もしテーブルが行を削除したり分割したりすると、テーブルを修復します。

  2. もしインデックス ページがソートされていなければ、それらをソートします。

  3. もしテーブルの統計が最新でなければ、(そしてインデックスをソートする事で修復が完了されなければ)それらを更新します。

InnoDB テーブルに対しては、 インデックス統計とクラスタされたインデックス内の使用されていないフリー スペースを更新する為にテーブルを復元する ALTER TABLE に OPTIMIZE TABLE がマップされます。

--skip-new か --safe-mode オプションを利用して mysqld をスタートさせる事で、OPTIMIZE TABLE が別のストレージ エンジン上で機能させる事ができます。この場合、OPTIMIZE TABLE は単に ALTER TABLE にマップされます。

OPTIMIZE TABLE は次のカラムを利用して結果セットを返します。

カラム 値
Table テーブル名
Op いつも optimize
Msg_type status、error、info、または warning の1つ
Msg_text メッセージ

MySQL は OPTIMIZE TABLE が起動している最中にテーブルをロックするという事に注意してください。

OPTIMIZE TABLE ステートメントは、任意の NO_WRITE_TO_BINLOG キーワード(またはそのエイリアス LOCAL)が利用されない限り、バイナリ ログに書きこまれます。これは、複製マスタとして機能している MySQL サーバ上で利用される OPTIMIZE TABLE ステートメントが、複製スレーブにデフォルトで複製される為に行われます。

OPTIMIZE TABLE は、POINT カラム上の空間インデックスのような、R-tree インデックスをソートしません。(バグ #23578)

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates