MySQLがどうやってSQLをパースしてデータ操作をしているのかをステップ実行して追いたいです。

MySQLの開発者とかは絶対そのような事を繰り返して開発してると思うので、何か方法はあると思うのですが、、、(MySQLのソースをデバッガで動かして処理を追うとかになるのでしょうか、そんな感じでも良いので、そういうのやる方法を教えてください)

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/05/22 12:45:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:frkw2004 No.1

回答回数194ベストアンサー獲得回数21

ポイント27pt

オラクルでもSQLサーバーでも、SQLがどのように実行されるかを調べるのに、「実行計画」というキーワードが役立ちます。MySQLでも同じで、Explainという命令が使えます。

http://dev.mysql.com/doc/refman/5.1/ja/explain.html

これにより、SQLの実行でどのような順番でテーブルが結合されるのかどのようにIndexが使われているか、といったような情報が入手できます。

この結果から、どのようなIndexを作ればいいか、テーブルの結合順番をどうすれば良いか、といったことが分かり、SQLのパフォーマンスを向上できます。

id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント27pt

MySQL :: MySQL 5.1 リファレンスマニュアル :: 2.9.2 典型的な configure オプション

さすがにやったことがないのでマニュアルからの参照になりますが、

MySQL 5.1.12 では、--with-debug を使用して MySQL のデバッグのサポートを可能にしサーバの起動時に --debug="d,parser_debug" オプションを使用できるようにします。これにより SQL ステートメントの処理に使用される Bison parser に parser トレースをサーバの標準エラー出力にダンプさせます。一般的には、この出力はエラーログに記録されます。

これで可能に思えます。


まぁ最悪、gdb 等を使用して、やる方法もあるようですが。

MySQL :: MySQL 5.1 Reference Manual :: 22.5.1.4 Debugging mysqld under gdb

id:matsu-boolean No.3

回答回数43ベストアンサー獲得回数7

ポイント26pt

 MySQLの開発に参加したいというのでなければ、1の方のおっしゃる通り、おそらく実行計画の事ですね。

 これは、どのようにテーブルを結合し、どのインデックスが使えるかなどをMySQLが判断した様子を表示出来ます。

 拙作ですが、SQL開発環境のフリーソフトウェアを公開しています。

 SQLエディタ画面から Ctrl+Eで実行計画が簡単に見られるようにしています。よろしければお使いください。

 MySQLへの接続には別途 MyODBC (Version 5.1が良いでしょう)が必要となります。

 MySQL以外でも、Oracle, SQL Server, DB2, PostgreSQLで実行計画を表示する事が出来ます。

http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/



 

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません