SlideShare ist ein Scribd-Unternehmen logo
1 von 12
MySQL SHOW 構文について
SHOW 構文について SHOW  は、データベース、テーブル、カラム、またサーバのステータス情報など様々な情報を提供する多くの形を持っています。 知っていると便利なものが多いので紹介いたします。
SHOW 構文一覧 (1/3) ・ SHOW AUTHORS MySQL のユーザー情報が表示されます。 Name 、 Location 、 Comment 値が表示されます。 このステートメントは MySQL 5.1.3 で追加されました。 ( 引用元 :http://dev.mysql.com/doc/refman/5.1/ja/show-authors.html) ・ SHOW CHARACTER SET MySQL で使用可能な文字コードの一覧が表示されます。 ・ SHOW COLLATION 「何の文字コードがきたらどの CHARACTER SET が使われるか」の一覧が表示されます。 ・ SHOW COLUMNS [table 名 ] 指定した [table 名 ] のテーブル列情報 ( が表示されます。「 DESC [table 名 ] 」と全く同じ働きをします。 ・ SHOW CONTRIBUTORS MySQL  のソ-スに貢献した人や、 MySQL AB  サポートを引き起こす情報を表示します。 それぞれの貢献者に対して、  Name 、 Location 、そして  Comment  値を表示します。  このステートメントは、 MySQL 5.1.12  で追加されました。  ( 引用元 :http://dev.mysql.com/doc/refman/5.1/ja/show-contributors.html)) ・ SHOW CREATE DATABASE [DB 名 ] 指定した [DB 名 ] を作成するための CREATE DATABASE 構文が表示されます。 ・ SHOW CREATE TABLE [table 名 ] 指定した [table 名 ] を作成するための CREATE TABLE 構文が表示されます。 ・ SHOW CREATE VIEW [VIEW 名 ] 指定した [view 名 ] を作成するための CREATE VIEW 構文が表示されます。 ・ SHOW DATABASES ステートメントを実行した MySQL サーバー上のデータベースの一覧が表示されます。
SHOW 構文一覧 (2/3) ・ SHOW ENGINE [engine 名 ] STATUS 例 ) SHOW ENGINE INNODB STATUS  ストレージ エンジンに関するログやステータス情報を表示します。 今現在 innodb と NDB(mysql クラスターのストレージエンジン ) のみ対応のようです。 (MyISAM は非対応 ) この構文は廃止予定らしいです (http://dev.mysql.com/doc/refman/5.1/ja/show-innodb-status.html)  ・ SHOW ERRORS 直近のエラーが表示されます。 ・ SHOW GRANTS FOR [user 名 ] 指定された [user 名 ] の情報が表示されます。 ・ SHOW INDEX FROM [table 名 ] 指定 [table 名 ] に付与されている index の情報が表示されます。 ・ SHOW INNODB STATUS SHOW ENGINE 構文、「 SHOW ENGINE INNODB STATUS 」を実行した際と同じです。 ・ SHOW PRIVILEGES サーバーがサポートするシステム権限一覧 (Create 権限、 Alter 権限等 ) が表示されます。 ・ SHOW [FULL] PROCESSLIST 非常に便利なので別ページにて詳細を記述しました。 ・ SHOW STATUS サーバ ステータス情報の一覧が表示されます。
SHOW 構文一覧 (3/3) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
以下の REPLICATION 環境で動く SHOW 構文 ( 複製ステートメント ) ついては ・ SHOW SLAVE STATUS slave 側の状況が一覧表示 ・ SHOW MASTER STATUS master 側の状況が一覧表示 ・ SHOW BINLOG EVENTS バイナリ ログ内のイベント を表示。 ※ limit 句必須・・・ バイナリ ログのコンテンツ ( データを変更するサーバによって実行された全てのステートメントを含む ) を返す ので 大量にリソースを消費してしまいます。 ・ SHOW BINARY LOGS バイナリログの一覧 (file size も ) が表示 フラクタリストエンジニア知識共有会議事録ブログ mysql のレプリケーション障害の復旧 http://techknowledge.fractalist.jp/20091001/62 にて紹介されております。 どれだけ遅延が発生しているか、どんなエラーが発生しているか等々 一目で分かるような一覧が表示されます。 レプリケーションで情報を得たい場合は必須といっても過言ではない構文です。
SHOW [FULL] PROCESSLIST ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
SHOW PROCESSLIST 構文を実行した際に表示される State や Command に表示される文言について  (1/4) 大体わかるけど、「 Sending data 」って具体的に何なの?といったものがあると思います。 それらを調べてみました。 Checking table スレッドがテーブルの自動チェックを実行している。 Closing tables スレッドが、変更されたテーブルデータをディスクにフラッシュし、使用したテーブルを閉じている。これには通常 それほど時間がかからない。時間がかかる場合、ディスクの使用率をチェックする必要がある。  Copying to tmp table on disk テンポラリ結果セットが  tmp_table_size  よりも大きく、スレッドがメモリベースのテンポラリテーブルをディスクベースに変更して、メモリの節約を図っている。   Creating tmp table スレッドは、クエリの結果の一部を保持するためのテンポラリテーブルを作成中。   deleting from main table 複数テーブルを削除する最初の段階で、最初のテーブルを削除中。   deleting from reference tables 複数テーブルを削除する  2  番目の段階で、他のテーブルから、一致したレコードを削除中。
SHOW PROCESSLIST 構文を実行した際に表示される State や Command に表示される文言について  (2/4) Flushing tables スレッドが  FLUSH TABLES  を実行中。すべてのスレッドによりそのテーブルが閉じられるのを待っている。   Killed 誰かがスレッドを強制終了の命令を出したため、次回のキルフラグチェック時に強制終了される。 MySQL  では大きな各ループ でフラグがチェックされるが、それでもスレッド終了には少し時間がかかる場合がある。スレッドが他のスレッドによってロックされ ている場合、そのロックが解除されたところで強制終了が実行される。   Sending data SELECT  ステートメントのレコードを処理中で、かつクライアントにデータを送信中。  Sorting for group GROUP BY  のソートを実行中。  Sorting for order ORDER BY  のソートを実行中。  Opening tables  スレッドがテーブルを開こうとしている。これは、何かが妨害していなければすぐに終わるはずである。たとえば、 ALTER TABLE  や  LOCK TABLE  などにより、そのコマンドの終了時までテーブルが開かないことがある。  Removing duplicates クエリで  SELECT DISTINCT  が使用されたが、 MySQL  は初期段階で重複を除外する最適化を実行できなかった。 このため、 MySQL  は結果をクライアントに送信する前に、重複レコードを削除する段階を踏む必要がある。
SHOW PROCESSLIST 構文を実行した際に表示される State や Command に表示される文言について  (3/4) Reopen table スレッドはテーブルのロックを取得したが、ロック取得後、下のテーブル構造が変更されていることを認識した。 このため、ロックを解除し、テーブルを閉じて、再び開こうとしている。   Repair by sorting 修復コードがソートを使用してインデックスを作成している。  Repair with keycache 修復コードが、キーキャッシュにより、キーを  1  つずつ作成している。これは、 Repair by sorting  よりも大幅に時間がかかる。  Searching rows for update スレッドがレコード更新の初期段階として、更新対象の一致レコードを検索中である。レコード検索に使用するインデックスを  UPDATE  が変更すると、この段階が必要となる。  Sleeping クライアントから新しいコマンドが送信されるのを待っている。  System lock テーブルの外部システムロックを待っている。同じテーブルにアクセスする複数の  mysqld  サーバを使用していない場合、 --skip-external-locking  オプションでシステムロックを無効にできる。  Upgrading lock INSERT DELAYED ハンドラが、レコード挿入のためにテーブルをロックしようとしている。
SHOW PROCESSLIST 構文を実行した際に表示される State や Command に表示される文言について  (4/4) Updating スレッドが更新対象レコードを検索して更新している。   User Lock GET_LOCK()  を待っている。  GET_LOCK ・・・ロックが取得された場合 1 が返される関数。 Waiting for tables テーブル構造が変更されているため、テーブルを開き直して新しい構造を取得する必要があるという通知をスレッドが受け取った。 テーブルを開き直すためには、他のすべてのスレッドがそのテーブルを閉じるのを待つ必要がある。  waiting for handler insert INSERT DELAYED  ハンドラがすべての挿入処理を完了し、新規の挿入を待機中である。
まとめ SHOW  構文を知っていれば、何かと情報を引き出したい時に非常に有効です。 ・どこかにテーブル設計資料があるはずだけど探す時間が惜しい。 ・ MySQL の設定ファイルの場所どこだっけ、でもあのコマンドで一発。 ・本当に!いま!すぐにでもあの情報が見たい!状況が見たい! Etc etc… といった状況等、 ちょっと show 構文を覚えてるだけで無駄な時間削減となります。 引用、参考元 Sun microsystems MySQL.com 12.5.4. SHOW  構文 http://dev.mysql.com/doc/refman/5.1/ja/show.html

Weitere ähnliche Inhalte

Andere mochten auch

20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみたngi group.
 
muninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリングmuninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリングngi group.
 
素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~ngi group.
 
SvnからGitへの移行について
SvnからGitへの移行についてSvnからGitへの移行について
SvnからGitへの移行についてngi group.
 
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx軽量高機能webサーバーnginx
軽量高機能webサーバーnginxngi group.
 
RubyとPost Gis
RubyとPost GisRubyとPost Gis
RubyとPost Gisngi group.
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Socialngi group.
 
Zshって最強らしい
Zshって最強らしいZshって最強らしい
Zshって最強らしいngi group.
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】MOCKS | Yuta Morishige
 

Andere mochten auch (12)

20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
 
muninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリングmuninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリング
 
素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~
 
SvnからGitへの移行について
SvnからGitへの移行についてSvnからGitへの移行について
SvnからGitへの移行について
 
The Royal Lagoon Bhubaneswar
The Royal Lagoon Bhubaneswar The Royal Lagoon Bhubaneswar
The Royal Lagoon Bhubaneswar
 
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx軽量高機能webサーバーnginx
軽量高機能webサーバーnginx
 
RubyとPost Gis
RubyとPost GisRubyとPost Gis
RubyとPost Gis
 
Tokyo Cabinet
Tokyo CabinetTokyo Cabinet
Tokyo Cabinet
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Social
 
Zshって最強らしい
Zshって最強らしいZshって最強らしい
Zshって最強らしい
 
しょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedeeしょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedee
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
 

Kürzlich hochgeladen

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Kürzlich hochgeladen (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

MySQLSHOW構文について 20091019

  • 2. SHOW 構文について SHOW は、データベース、テーブル、カラム、またサーバのステータス情報など様々な情報を提供する多くの形を持っています。 知っていると便利なものが多いので紹介いたします。
  • 3. SHOW 構文一覧 (1/3) ・ SHOW AUTHORS MySQL のユーザー情報が表示されます。 Name 、 Location 、 Comment 値が表示されます。 このステートメントは MySQL 5.1.3 で追加されました。 ( 引用元 :http://dev.mysql.com/doc/refman/5.1/ja/show-authors.html) ・ SHOW CHARACTER SET MySQL で使用可能な文字コードの一覧が表示されます。 ・ SHOW COLLATION 「何の文字コードがきたらどの CHARACTER SET が使われるか」の一覧が表示されます。 ・ SHOW COLUMNS [table 名 ] 指定した [table 名 ] のテーブル列情報 ( が表示されます。「 DESC [table 名 ] 」と全く同じ働きをします。 ・ SHOW CONTRIBUTORS MySQL のソ-スに貢献した人や、 MySQL AB サポートを引き起こす情報を表示します。 それぞれの貢献者に対して、 Name 、 Location 、そして Comment 値を表示します。 このステートメントは、 MySQL 5.1.12 で追加されました。 ( 引用元 :http://dev.mysql.com/doc/refman/5.1/ja/show-contributors.html)) ・ SHOW CREATE DATABASE [DB 名 ] 指定した [DB 名 ] を作成するための CREATE DATABASE 構文が表示されます。 ・ SHOW CREATE TABLE [table 名 ] 指定した [table 名 ] を作成するための CREATE TABLE 構文が表示されます。 ・ SHOW CREATE VIEW [VIEW 名 ] 指定した [view 名 ] を作成するための CREATE VIEW 構文が表示されます。 ・ SHOW DATABASES ステートメントを実行した MySQL サーバー上のデータベースの一覧が表示されます。
  • 4. SHOW 構文一覧 (2/3) ・ SHOW ENGINE [engine 名 ] STATUS 例 ) SHOW ENGINE INNODB STATUS ストレージ エンジンに関するログやステータス情報を表示します。 今現在 innodb と NDB(mysql クラスターのストレージエンジン ) のみ対応のようです。 (MyISAM は非対応 ) この構文は廃止予定らしいです (http://dev.mysql.com/doc/refman/5.1/ja/show-innodb-status.html) ・ SHOW ERRORS 直近のエラーが表示されます。 ・ SHOW GRANTS FOR [user 名 ] 指定された [user 名 ] の情報が表示されます。 ・ SHOW INDEX FROM [table 名 ] 指定 [table 名 ] に付与されている index の情報が表示されます。 ・ SHOW INNODB STATUS SHOW ENGINE 構文、「 SHOW ENGINE INNODB STATUS 」を実行した際と同じです。 ・ SHOW PRIVILEGES サーバーがサポートするシステム権限一覧 (Create 権限、 Alter 権限等 ) が表示されます。 ・ SHOW [FULL] PROCESSLIST 非常に便利なので別ページにて詳細を記述しました。 ・ SHOW STATUS サーバ ステータス情報の一覧が表示されます。
  • 5.
  • 6. 以下の REPLICATION 環境で動く SHOW 構文 ( 複製ステートメント ) ついては ・ SHOW SLAVE STATUS slave 側の状況が一覧表示 ・ SHOW MASTER STATUS master 側の状況が一覧表示 ・ SHOW BINLOG EVENTS バイナリ ログ内のイベント を表示。 ※ limit 句必須・・・ バイナリ ログのコンテンツ ( データを変更するサーバによって実行された全てのステートメントを含む ) を返す ので 大量にリソースを消費してしまいます。 ・ SHOW BINARY LOGS バイナリログの一覧 (file size も ) が表示 フラクタリストエンジニア知識共有会議事録ブログ mysql のレプリケーション障害の復旧 http://techknowledge.fractalist.jp/20091001/62 にて紹介されております。 どれだけ遅延が発生しているか、どんなエラーが発生しているか等々 一目で分かるような一覧が表示されます。 レプリケーションで情報を得たい場合は必須といっても過言ではない構文です。
  • 7.
  • 8. SHOW PROCESSLIST 構文を実行した際に表示される State や Command に表示される文言について (1/4) 大体わかるけど、「 Sending data 」って具体的に何なの?といったものがあると思います。 それらを調べてみました。 Checking table スレッドがテーブルの自動チェックを実行している。 Closing tables スレッドが、変更されたテーブルデータをディスクにフラッシュし、使用したテーブルを閉じている。これには通常 それほど時間がかからない。時間がかかる場合、ディスクの使用率をチェックする必要がある。 Copying to tmp table on disk テンポラリ結果セットが tmp_table_size よりも大きく、スレッドがメモリベースのテンポラリテーブルをディスクベースに変更して、メモリの節約を図っている。 Creating tmp table スレッドは、クエリの結果の一部を保持するためのテンポラリテーブルを作成中。 deleting from main table 複数テーブルを削除する最初の段階で、最初のテーブルを削除中。 deleting from reference tables 複数テーブルを削除する 2 番目の段階で、他のテーブルから、一致したレコードを削除中。
  • 9. SHOW PROCESSLIST 構文を実行した際に表示される State や Command に表示される文言について (2/4) Flushing tables スレッドが FLUSH TABLES を実行中。すべてのスレッドによりそのテーブルが閉じられるのを待っている。 Killed 誰かがスレッドを強制終了の命令を出したため、次回のキルフラグチェック時に強制終了される。 MySQL では大きな各ループ でフラグがチェックされるが、それでもスレッド終了には少し時間がかかる場合がある。スレッドが他のスレッドによってロックされ ている場合、そのロックが解除されたところで強制終了が実行される。 Sending data SELECT ステートメントのレコードを処理中で、かつクライアントにデータを送信中。 Sorting for group GROUP BY のソートを実行中。 Sorting for order ORDER BY のソートを実行中。 Opening tables スレッドがテーブルを開こうとしている。これは、何かが妨害していなければすぐに終わるはずである。たとえば、 ALTER TABLE や LOCK TABLE などにより、そのコマンドの終了時までテーブルが開かないことがある。 Removing duplicates クエリで SELECT DISTINCT が使用されたが、 MySQL は初期段階で重複を除外する最適化を実行できなかった。 このため、 MySQL は結果をクライアントに送信する前に、重複レコードを削除する段階を踏む必要がある。
  • 10. SHOW PROCESSLIST 構文を実行した際に表示される State や Command に表示される文言について (3/4) Reopen table スレッドはテーブルのロックを取得したが、ロック取得後、下のテーブル構造が変更されていることを認識した。 このため、ロックを解除し、テーブルを閉じて、再び開こうとしている。 Repair by sorting 修復コードがソートを使用してインデックスを作成している。 Repair with keycache 修復コードが、キーキャッシュにより、キーを 1 つずつ作成している。これは、 Repair by sorting よりも大幅に時間がかかる。 Searching rows for update スレッドがレコード更新の初期段階として、更新対象の一致レコードを検索中である。レコード検索に使用するインデックスを UPDATE が変更すると、この段階が必要となる。 Sleeping クライアントから新しいコマンドが送信されるのを待っている。 System lock テーブルの外部システムロックを待っている。同じテーブルにアクセスする複数の mysqld サーバを使用していない場合、 --skip-external-locking オプションでシステムロックを無効にできる。 Upgrading lock INSERT DELAYED ハンドラが、レコード挿入のためにテーブルをロックしようとしている。
  • 11. SHOW PROCESSLIST 構文を実行した際に表示される State や Command に表示される文言について (4/4) Updating スレッドが更新対象レコードを検索して更新している。 User Lock GET_LOCK() を待っている。 GET_LOCK ・・・ロックが取得された場合 1 が返される関数。 Waiting for tables テーブル構造が変更されているため、テーブルを開き直して新しい構造を取得する必要があるという通知をスレッドが受け取った。 テーブルを開き直すためには、他のすべてのスレッドがそのテーブルを閉じるのを待つ必要がある。 waiting for handler insert INSERT DELAYED ハンドラがすべての挿入処理を完了し、新規の挿入を待機中である。
  • 12. まとめ SHOW 構文を知っていれば、何かと情報を引き出したい時に非常に有効です。 ・どこかにテーブル設計資料があるはずだけど探す時間が惜しい。 ・ MySQL の設定ファイルの場所どこだっけ、でもあのコマンドで一発。 ・本当に!いま!すぐにでもあの情報が見たい!状況が見たい! Etc etc… といった状況等、 ちょっと show 構文を覚えてるだけで無駄な時間削減となります。 引用、参考元 Sun microsystems MySQL.com 12.5.4. SHOW 構文 http://dev.mysql.com/doc/refman/5.1/ja/show.html