2011-01-25 14 views
3

MySQLのプロファイラを使用して、私が調査しているいくつかのMySQLの問題の診断を支援しています。しかし、私がshow profilesコマンドを発行したときに私は何の結果も得られません。MySQL Profiler - 表示プロファイルにエントリがありません

は、これは私がそれを使用しています方法です:

set profiling=1 --Enable profiling 

-- Run some selects/inserts etc 
select count(*) from mytable 
insert into mytable (mydata) values ('wibble') 

show profiles 

私は私が(情報from this MySQL dev page PER)プロファイリングを有効にした後に行う選択などのプロファイルデータを与えるためにshow profilesコマンドを期待していた、しかし、すべての私は空の結果セットを返します。プロファイリングを有効/無効にするときにエラーは表示されず、プロファイルを表示しようとするとエラーが表示されません。

以下は、または適切ではないかもしれません可能性があります

  1. コマンドは私は、MySQL 5.0.77
  2. select * from information_schema.profiling返しますなし結果で

答えて

4

を実行していますphpMyAdminを介して、

  • を発行しました私自身の質問に答えてください...

    inbuilt MySQLプロファイリングユーティリティ上記で説明したものは、MySQLセッションベースで動作します。 phpMyAdminは、コマンドが発行されるたびに新しい接続を作成するようです。このように、プロファイリングをオンにしてからサブクエリの選択を行うコマンドは、互いに切り離されます。

    これは、SSH経由でMySQLサーバーに接続し、同じコマンドを実行することで確認できます。この構成では、プロファイリングが機能します。

    ただし、そのセッション内で発行されたコマンドのみをプロファイルします。これは、別のソース(すなわち、ウェブアプリケーション)からDBに対して実行される他のクエリが、プロファイル結果に含まれないことを意味する。

    ソース(MSSQLプロファイラの動作方法)に関係なく、DBに対するすべてのクエリをプロファイリングする方法が見つかりませんでした。だから私は、my.cnfの中で、ログの設定値を設定することに依存する必要があり、その後、SSHセッションで手動でログインしてクエリを実行した瞬間に:

    log=/var/log/mysqldquery.log 
    

    ない完璧なソリューションではやや面倒であるとして、しかし、できます。

  • 5

    これはテスト済みです。 (?あなたのストレージエンジンに依存する)

    あなたはTRANSACTIONを使用することができます場合は、phpMyAdminにからそれを行うことができます

    これを試してみてください:

    START TRANSACTION; 
    
    set profiling=1; --Enable profiling 
    
    -- Run some selects/inserts etc 
    select count(*) from mytable; 
    insert into mytable (mydata) values ('wibble'); 
    
    show profiles; 
    
    COMMIT; --or rollback 
    

    は、私も追加したことに注意してください各クエリの後にセミコロン

    0

    上記はうまくいくかもしれませんが、まだやや危険です。レプリケーションを使用している場合や、クエリログに更新がある場合は、データセットを変更することに注意してください。慎重に使用してください。

    関連する問題