DBセッションでのデバックに使う関数や設定変数アレコレ まとめ

 まず最初に紹介するのがコレ、現在のDBのセッションに割り当てられた接続IDを取得するCONNECTION_ID()関数。一意なテンポラリーテーブル名に使われたりします。使い方としてはアプリケーション側で、作成した筈のテンポラリーテーブルやユーザ変数にアクセス出来ない、トランザクションが効かないといった場合にまず初めに使用します。このIDが同一でない場合、別のDBオブジェクトを参照している可能性があります。よくありがちな例としてDBオブジェクトを参照渡ししたつもりが、複製してしまって、別のDBオブジェクトが生成されてしまっていたりします。

SELECT CONNECTION_ID();

 次にそれぞれの状況に応じてよく使う設定変数をあげていきます。

SELECT @@local.autocommit;

オートコミットの状態を確認します。

SELECT @@local.tx_isolation;

現在のSQLの分離レベルを確認します。

  • DB接続時間制限
SELECT @@local.wait_timeout;

デフォルト8時間ですが、状況によりタイムアウトを短く設定している場合があるでしょう。『has gone away』のエラーが出ている場合にまっさきに確認する値です。