[MySQL] “Reading table information for completion of table and column names”ってなにかを教えちゃいますの巻

スポンサーリンク

MySQLサーバーにMySQLコマンドでアクセスしてMySQLコマンド「use データーベース名」で使用するDBを切り替えた時に確認されたメッセージが気になったのでちょっとだけ調べてみました。結果スッキリ出来たのでここに共有します。


今までDBの切り替えを行った場合以下のメッセージを確認していましたが、特に気にしていませんでした。以下はMySQLサーバーへログイン後「use mysql」を実行し、データーベース名が「mysql」のDBに切り替えた時のメッセージです。

mysql> use mysql
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
mysql>
スポンサーリンク

Reading table information for completion of table and column names

この一文を日本語にすると、「テーブル名とカラム名の補完のためにテーブル情報を読んでます」です。

テーブル名とカラム名の補完とは

この補完(不完全なものを補って完全にすること)の動作は、TABキーで実現します。以下の例を見てみてください。

mysql> select max_←ここで TABキー を押すと、候補が表示される↓
max_connections max_questions max_updates max_user_connections
mysql> select max_questions
           ↑ここで TABキー を押すと残り(赤字部分)が補正される

コマンドで操作を行う際に、カラム名を全て手打ちしたりテーブル名を全て手打ちしなくても、入力した文字列から始まるものが一つである場合は補完され、複数ある場合は入力した文字列から始まるものが一覧で表示される機能です。

You can turn off this feature to get a quicker startup with -A

この一文を日本語にすると、「起動を速めるためにこの機能は”-A”オプションで無効にできます」です。

無効にする方法

表示されるメッセージにあるとおりこの機能を無効にするにはMySQLに接続する際に「-A」のオプションを利用して接続することもできます「mysql -A -u root -p」。しかし面倒ですし、WordPressからのアクセスにも補完は必要なく、アクセスの高速化を求めるので、/etc/my.cnfに以下の設定を追加しました。

[mysql]←[mysqld]ではないので注意!
no-auto-rehash

自動でrehashしなくていいですよ、補完目的で情報を集めなくていいですよ っていう意味の記述です。

手打ちでの操作を沢山行う場合にはあって嬉しい機能ですけど、MySQLへのアクセスが決まった方法で行われる場合(手動でない場合)は不要な機能です。データーベースへのアクセスもテーブル情報の読み込みの分遅くなってしまうのでこの設定は無効にしていいと思いました。

これでモヤモヤが解決。

参考にさせていただいた以下のサイトに感謝です。

mysqlコマンドで、テーブル名とかカラム名の補完(completion)をする方法
http://d.hatena.ne.jp/hirose31/20080122/1200974354

7.6.1. mysql オプション
http://dev.mysql.com/doc/refman/5.1/ja/mysql-command-options.html

Why is access to my database very slow? [closed]
http://serverfault.com/questions/438557/why-is-access-to-my-database-very-slow

以上

 

コメント

  1. くりくり より:

    おはようございます。

    mrtgはcpu,memory,disk使用率、ネットワーク,php-fpmのプロセス数を監視しておりましたが
    muninに変更したらかなりのリソースを監視できるようになりました。
    mysqlのスレッド数、slowクエリなんかもみれちゃいます。php-fpmもphpのメモリー使用量なんかもあったのは驚きです。
    mysqlなんかはslowクエリログを出力させてlogwatchにとやっていたのですがこれで常時監視できますね。
    ただ多くのリソース監視が出来るようになった分muninはmrtgと比べると重い感じがします。

  2. trippyboy より:

    くりくりさん

    muninは魅力ですね!
    リソースを食うというのがちょっと気になりますが、muninは画面表示時にデータを持ってくる感じですかね。
    mysqlのslowクエリを見れるとは魅力的ですね。
    ちょっと頭なの中で課題にしておきます!

タイトルとURLをコピーしました