JDK5事業拡大のため、新しい仲間を募集しています。→詳しくはこちらサーバステータスは、様々なサーバの状態を返します。現在のサーバステータスを確認するには、以下のSQL文を発行します。'Qcache%';サーバステータスを変更することは出来ません。サーバステータスは主に、各種システム変数の調整をするために利用されます。パフォーマンスチューニング用です。以下、MySQL5.0.16対応のサーバステータス一覧です。クエリキャッシュ関連Qcache_free_blocksクエリキャッシュの空きブロック数。この値が0以上の場合、クエリキャッシュにはまだ余裕があります。システム変数でキャッシュサイズを指定できます。Qcache_free_memoryクエリキャッシュの空きメモリ(byte単位)。この値が0以上の場合、クエリキャッシュにはまだ余裕があります。システム変数でキャッシュサイズを指定できます。Qcache_hitsキャッシュヒット数。SQL実行時、キャッシュ内から結果を返せる場合にこの値が増加します。Qcache_insertsキャッシュに加えられたクエリ数。SQL実行時、キャッシュ内から結果を返せないがその後同じSQLが発行された場合にキャッシュを使えるようにキャッシュに加えられたクエリが発行された場合にこの値が増加します。Qcache_lowmem_prunesメモリ不足によりキャッシュから削除されたクエリ数。システム変数でキャッシュサイズを増やすことでキャッシュの効率を上げる事が出来るでしょう。Qcache_not_cachedキャッシュされなかったクエリ数。大きかった場合など、クエリ結果はキャッシュされません。Qcache_queries_in_cacheキャッシュに登録されているクエリ数。Qcache_total_blocksクエリキャッシュの総ブロック数。Clusterストレージエンジンに指定の名前を持ったテーブルについて知っているかどうかを問い合わせる事が出来ます。この動作はディスカバリー(discovery)と呼ばれています。このステータス値は、ディスカバーされた回数を返します。InnoDB関連Innodb_buffer_pool_pages_dataInnodb_buffer_pool_pages_dirtyInnodb_buffer_pool_pages_flushedInnodb_buffer_pool_pages_freeInnodb_buffer_pool_pages_latchedInnodb_buffer_pool_pages_miscInnodb_buffer_pool_pages_totalInnodb_buffer_pool_read_ahead_rndInnodb_buffer_pool_read_ahead_seqInnodb_buffer_pool_read_requestsInnodb_buffer_pool_readsInnodb_buffer_pool_wait_freeInnodb_buffer_pool_write_requestsInnodb_data_fsyncsInnodb_data_pending_fsyncsInnodb_data_pending_readsInnodb_data_pending_writesInnodb_data_readInnodb_data_readsInnodb_data_writesInnodb_data_writtenInnodb_dblwr_writesInnodb_dblwr_pages_writtenInnodb_log_waitsInnodb_log_write_requestsInnodb_log_writesInnodb_os_log_fsyncsInnodb_os_log_pending_fsyncsInnodb_os_log_pending_writesInnodb_os_log_writtenInnodb_page_sizeInnodb_pages_createdInnodb_pages_readInnodb_pages_writtenInnodb_row_lock_current_waitsInnodb_row_lock_timeInnodb_row_lock_time_avgInnodb_row_lock_time_maxInnodb_row_lock_waitsInnodb_rows_deletedInnodb_rows_insertedInnodb_rows_readInnodb_rows_updated一般Aborted_clients中断された接続の数。接続を明示的に閉じないままクライアントが終了した場合にこの値が増加します。定期的に増えているようなら、どこかで接続を閉じていないシステムがあるかもしれません。Aborted_connectsMySQLサーバに接続しようとして失敗した回数。超えるSQL文が発行された回数(トランザクション単位)。この場合、バイナリログ出力のためにテンポラリファイルが使用された為にパフォーマンス低下を招いている可能性があります。Binlog_cache_useバイナリログキャッシュが使用されたトランザクション数。合計が全体のトランザクション数になります。Bytes_receivedクライアントから受け取ったデータ内容の総バイト数。Bytes_sentクライアントに送信したデータ内容の総バイト数。Com_xxxSQLが発行される毎にインクリメントされるカウント。ステータス値が1増加します。ステータス値が増加します。CompressionMySQL5.0.16から導入されました。現在の接続がクライアント/サーバ間の圧縮プロトコルを使っているかどうかを返します。ConnectionsMySQLサーバへの接続試行回数(成功/不成功に関わらず)を返します。Created_tmp_disk_tablesサーバによって暗黙的にディスク上に生成されたテンポラリテーブルの数。Created_tmp_filesmysqldが生成したテンポラリファイルの数。Created_tmp_tablesサーバによって暗黙的にメモリ内に生成されたテンポラリテーブルの数。大きくすることによってディスクベースではなくメモリベースのテンポラリテーブルを使う回数が増えるはずです。文によるレコード挿入時に発生したエラー数。場合、これはレコード重複エラーによるものです。現在のMySQLでは、全てのカラムがデフォルト値を持っていて挿入しようとした値が不正だった場合でもMySQLは可能な限りその値を加工して挿入を試みます。サイズ10のカラムに20文字の文字列をINSERTしようとした場合MySQLは文字長を10に切り詰めます(エラーは返しません)。これによって、MySQLではINSERT時にエラーが発生する場面というのは限られてきます。その中で最も一般的なのが、レコード重複エラーという訳です。この動作は将来のMySQLでは変更される可能性もあります。不正な値を挿入しようとしたときに、エラーを返すようになるという事です。これは他DBとの互換性が考慮されています。一般的に、値の不正チェックはプログラム側で行いDB側で行うべきではありません。DBによってそのチェック方法が異なるからです。いう手法を取っていると他DBへ移行することが難しくなります。DELAYED文によって生成されたスレッド数。DELAYED文によって挿入されたレコード数。Flush_commandsFLUSH文を実行した回数。Handler_commitCOMMITを内部的に実行した回数。Handler_deleteテーブルから列が削除された回数。Handler_read_firstインデックスから最初のエントリーが読み込まれた回数。この値が大きい場合は、サーバがインデックスのフルスキャンを多く行っているという事です。foo文の実行などが当てはまります。インデックスのフルスキャンは、インデックスを張らない場合より処理が遅くなる可能性があります。Handler_read_keyキーに基づいたレコード読み込みが要求された回数。この値が大きい事は、適切にインデックス化されたテーブルおよびクエリを使っているという証になります。Handler_read_nextキー順序による次レコードの読み込みが要求された回数。インデックススキャンやインデックスによる範囲指定を行ったときにこの値が増加します。Handler_read_prevキー順序による前レコードの読み込みが要求された回数。最適化するために利用されます。Handler_read_rnd固定位置に基づいたレコード読み込み要求の数。結果のソートが必要なクエリを大量に発行した場合、この値が大きくなります。テーブルの全件スキャンや適切にキーを使えない結合を持ったクエリを発行している可能性があります。Handler_read_rnd_nextデータファイル上での次レコード読み込みが要求された回数。テーブルスキャンを多く実行したとき、この値が大きくなります。このことは通常、テーブルに適切なインデックスが張られていないかインデックスを利用できないようなクエリを発行していることを意味します。Handler_rollbackROLLBACKを内部的に実行した回数。Handler_updateレコード更新を行った回数。Handler_writeレコード挿入を行った回数。Key_blocks_not_flushedキーキャッシュ内で変更されたがまだディスクにフラッシュされていないキーブロック数。Key_blocks_unusedキーキャッシュ中の未使用ブロック数。システム変数の値を決定する目安とすることが出来ます。Key_blocks_usedキーキャッシュ中の使用ブロック数。mark)を示します。Key_read_requestsキャッシュ内キーブロックからの読み込み要求数。Key_readsディスク内キーブロックからの読み込み要求数。システム変数の値が小さすぎます。Key_read_requests」により計算できます。Key_write_requestsキャッシュ内キーブロックへの書き込み要求数。Key_writesディスク内キーブロックへの書き込み要求数。Last_query_costMySQL5.0.1から導入されました。最後にコンパイルされたクエリの総コスト。これは、同一クエリに関する異なるクエリプランのコスト比較に有用です。デフォルト値の0は、クエリがまだコンパイルされていない事を示します。Max_used_connectionsサーバが起動してから今までの間、同時接続していた数の最大値。DELAYED文で発行された後、まだ書き込まれずに待機しているレコード数。Open_files開いているファイル数。Open_streams開いているストリーム数(主にログとして使われる)。Open_tables現在開いているテーブル数。Opened_tables今までに開いたテーブル数。この値が大きい場合は、テーブルキャッシュのサイズが小さすぎるかもしれません。システム変数で、キャッシュサイズを変更できます。Questionsサーバに送信されたクエリ数。Rpl_status未実装です。Select_full_joinインデックスを使わない結合を使った回数。この値が0でない場合は、テーブルのインデックスを調べた方がいいでしょう。Select_full_range_join参照テーブルで範囲指定をした結合を使った回数。Select_range(結合の)先頭テーブルで範囲指定をした結合を使った回数。この数値が大きくても、通常はそれほど致命的な問題ではありません。Select_range_check各レコード毎にキー使用をチェックするキーを使わない結合の数。...正直、自分でも訳してて意味がわかりません(笑)。この値が0でない場合は、テーブルのインデックスを調べた方がいいでしょう。Select_scan(結合の)先頭テーブルでフルスキャンを行っている結合を使った回数。これは非常に好ましくない結合なので、この値が0でない場合には何らかの処置をして方が良いでしょう。Slave_open_temp_tablesスレーブのSQLスレッドによって現在開かれているテンポラリテーブルの数。とき、このサーバはマスタに繋ぐスレーブとして動作しています。Slave_retried_transactionsMySQL5.0.4から導入されました。スレーブのSQLスレッドがトランザクションを再試行した回数。指定された秒数以上掛かったスレッドの数。指定された秒数以上掛かったクエリの数。Sort_merge_passesソートアルゴリズムで必要になったマージパスの総数。システム変数の値を大きくすることを検討しましょう。Sort_range範囲指定されたソートを行った回数。Sort_rowsソートされた行数。Sort_scanテーブルスキャンによるソートを行った回数。Ssl_xxxSSL接続に使われるステータス。Table_locks_immediateテーブルロックが即座に実行された回数。Table_locks_waitedテーブルロックが即座には実行されず、ウェイトが必要だった回数。この値が大きく、パフォーマンス上の問題が発生した場合まずクエリを最適化しましょう。テーブルを分割するかレプリケーションを使用して負荷を分散するなどしましょう。Threads_cachedスレッドキャッシュ内に存在するスレッド数。Threads_connected現在開かれている接続(スレッド)数。Threads_created接続用に生成されたスレッド数。システム変数の値を大きくしてキャッシュサイズを増やしましょう。キャッシュヒット率を計算できます。Threads_running現在動いているスレッド数。Uptimeサーバ起動時からの経過秒数。