do_command() ★ ->my_net_set_read_timeout() ->clear_error() ------ここでクライアントからの接続を待つ my_net_set_read_timeout() dispatch_command(): (sql_parse.cc) ★ (この中で switch(command) によって処理の種類が case 分けされている) (クエリの場合は COM_QUERY: にひっかかって以下) mysql_parse() ★ Query_cache::send_result_to_client(): (sql_cache.cc) ★A★ mysql_execute_command() ★ handle_select(): (sql_select.cc) ★B★
★A★でまずクエリ処理の冒頭でクエリキャッシュの確認。
(ただし特にパラメタ設定していない場合は query_cache_size=0なのですぐに戻る)
★B★は各クエリ内容に応じて sql_*.cc の handle_*() 関数で処理される
(例: sql_update.cc, sql_insert.cc)
その他メモ:
debug オプションをつける(私は my.ini に記述した)と、実行中のドライブのルートに
mysqld.trace ファイルが作成される。(私の場合は D:\mysqld.trace)
.