2

アプリケーションがありemployee managementます。MySQLデータベースを使用しています。

私のアプリケーションには、のような機能がありadd /edit/delete /viewます。

機能を実行するたびに、データベースで1つのクエリが実行されます。add employeeの場合と同様に、insertクエリを実行します。

そのため、データベースで何かを実行して、日付までに実行されたクエリの数を確認したいと思います。

Javaコードに変更を加えたくありません。

4

5 に答える 5

2

あなたが使用することができますSHOW STATUS

SHOW GLOBAL STATUS LIKE 'Questions'

サーバーステータス変数に記載されているとおり:

ステータス変数の意味は次のとおりです。

[ deletia ]

  • Questions

    サーバーによって実行されたステートメントの数。Queriesこれには、変数とは異なり、クライアントによってサーバーに送信されたステートメントのみが含まれ、ストアドプログラム内で実行されたステートメントは含まれません。この変数は、、、、、、またはコマンドをカウントCOM_PINGしません。COM_STATISTICSCOM_STMT_PREPARECOM_STMT_CLOSECOM_STMT_RESET

注意してください:

于 2012-12-06T10:39:14.327 に答える
1

以下に説明するようにクエリを実行する必要があります。

  1. SELECTクエリ数を取得するには、次を実行します。Show global status like 'com_select';

  2. UPDATEクエリ数を取得するには、次を実行します。Show global status like 'com_update';

  3. DELETEクエリ数を取得するには、次を実行します。Show global status like 'com_delete';

  4. INSERTクエリ数を取得するには、次を実行します。Show global status like 'com_insert';

また、一般的なログを分析したり、MySQLプロキシを介してアプリケーションをルーティングしたりして、サーバー上ですべてのクエリを実行することもできます。

于 2013-09-30T10:05:52.747 に答える
0

コードを変更したくない場合は、トリガーを使用してデータベースでこれをトレースできます。制限は、トリガーは挿入/更新/削除時にのみ起動できるため、読み取り(選択)のカウントには使用できないということです。

于 2012-12-06T11:08:59.947 に答える
0

多分それはあなたの質問にはあまりにも「企業」であり、あまりにも「生産」です。

munin(http://munin-monitoring.org/)(他のmonitoring-toolsには同様の拡張機能があります)を使用する場合、リクエストの数を表示するmysql-monitoringツールを使用できます(Insert / Update /Loaddata/で分割されます。 。)あなたは発砲しています。

これらのツールを使用すると、使用量と生成している負荷を確認できます。特にデータが変更され、より多くのアクセス/ロード(インデックスの欠落、m:nテーブルが大きいためにクエリが増えるなど)が発生する可能性がある場合は、それを認識できます。

それは非常に便利で、休憩中にチェックを行うことができます。タイピングも何もせず、グラフを確認するだけです。

于 2012-12-06T11:15:16.743 に答える
0

動作するためにデータベースやアプリケーションを変更する必要がない最も正確な方法は、すべてのイベントをログに記録するようにデータベース管理システムを構成することだと思います。

必要に応じて分析できるテキストファイルであるログファイルが残ります。

これが、開始するためのGeneralQueryLogのマニュアルページです。

于 2012-12-06T11:23:57.587 に答える