0

データベースサーバー側を変更せずに、既存の Oracle DB 接続 (perl DBI) の帯域幅を測定することに関するアイデアを探しています。現在、私は実行しています

select * from table;

ほぼ既知の量のデータと応答のタイミングを持つテーブルに対して。シェルから手動で実行しており、管理者が確認できるように、アプリケーションの管理/デバッグ セクションに同様の機能を実装することを検討しています。具体的には、最初に準備を実行してから、 Time::HiRes を使用してパフォーマンスのタイミングを計りながら実行を実行することを考えています。

質問:

  1. ベンチマークに使用するより良い SQL ステートメントはありますか? おそらく、一部のクエリは、特定の量の意味のないデータをオンザフライで生成する可能性があります。dd if=/dev/zero bs=1k count=1k
  2. Web UI に統合可能な帯域幅を測定するための別のアプローチを考えられる人はいますか? 非対話型のシェル コマンドは正常に機能します。

少し背景。私のアプリケーションは、内部ネットワークを介して Oracle DB にアクセスしています。ネットワークに帯域幅の問題があります。悪い日には、ダイヤルアップと同じくらい悪いです。実装環境はRHEL/Oracle Instantclient/Perl DBIです。

4

1 に答える 1

1

ループ内にある Oracle サーバーで小さなスクリプトを実行してみてください。指定されたポートから読み取り (netcat を使用)、データを /dev/null に破棄します。次に、既知の量のデータを時々 (netcat を使用して) 送信し、所要時間を計測するスクリプトをクライアントに用意します。これは、ネットワーク パフォーマンスを測定するものであり、Oracle やディスクとは無関係です。

このようなもの:

Oracle サーバー上

while /bin/true
do
    nc -l 20000 > /dev/null
done

クライアント上

time dd if=/dev/zero bs=1024k count=10 | nc <oracle_ip> 20000
于 2013-10-15T08:59:19.977 に答える