MySQL最適化
Oba-QサーバーのデータベースであるMySQLに
以前よりモタツキ感が出てきた気がするので
最適化してみました。
事故が有っても良いように必ずバックアップ
してからの作業となります。
Oba-Qサーバーは事情により未だCentOS6の最終版で
MySQLもver.5.1です。
特定のデータベースを最適化
mysqlcheck -o -u username -p databasename
すべてのデータベースを最適化
mysqlcheck -A -o -u username -p
usernameは通常rootですが、拙生は他の
ユーザー名でデータベースを作成しています。
ユーザーのパスワードを入れたら開始です。
テーブルごとのステータスがOKであることを確認します。
Table does not support optimize, doing recreate + analyze instead
status : OK
長い時間が掛かりましたが無事終了。
CentOS7の方のサーバーのあるCMSの特定
テーブルの挙動が怪しかったのでこれも最適化。
こちらはInnoDBです。
mysql -u username -p
パスワード入力
でmysqlに入ります。
>use databasename; 該当データベースへ
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
>show tabales; テーブル一覧で確認
+————————————+
| Tables_in_databasenama |
+————————————+
| tablename1 |
| tablename2 |
| tablename3 |
| tablename4 |
+————————————+
いよいよ該当テーブルを最適化です。
>optimize table tablename;
+————-+————+————–+———————————————+
| Table | Op | Msg_type | Msg_text |
+————-+————+————–+———————————————+
|tablename |optimize | status |recreate+analyze instead OK |
+————-+————+————–+———————————————+
1 row in set (0.19 sec)
statusがOKなら一安心です。
立て続けに最適化を行なっても
Table is already up to date
と表示されるだけで無意味です。(笑
indexをマニュアルで最適化するには
analyze tableコマンドですが、InnoDBでは
頻繁に自動最適化が行われるため不要でしょう。
ストレージエンジンはMySQL5.5以降ではInnoDBが
デフォルトになっています。
MyISAMとの違いなどについては拙生は不案内で
トランザクション機能の有無くらいしか知りません。
でもクエリが中断された場合などのロールバックがある
だけでもInnoDBが優れているのだと思い込んでいます。(笑
最近のコメント