人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: kunitz
●カテゴリ:コンピュータ インターネット
✍キーワード:MySQL SQL ステップ ソース デバッガ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ふるるP
●27ポイント

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

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

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

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


2 ● b-wind
●27ポイント

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


3 ● matsu-boolean
●26ポイント

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/



関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ