よくある質問
- TGが負荷がけに使用するテーブル構造とはどのようなものですか
- 複数のユーザが同時にアクセスするような状況を再現できますか
- 一定の法則でキーを生成し、キーを基に異なるデータにアクセスできますか
- データベースへの接続/切断が繰り返されるような状況を再現できますか
- Oracle以外のデータベースには対応していますか
- トランザクションとしてPL/SQL(ORACLE)を実行できますか
- TGを利用するにはどれぐらいのマシンスペックが必要になりますか
- TGを時間指定で実行することはできますか
質問と答え
-
TGが負荷がけに使用するテーブル構造とはどのようなものですか
TGは、負荷がけのために使用する決まったテーブル構造というものをもちません。これはTGがユーザによって任意に登録されたSQL文を実行するという仕様によるものです。よって、TGはいかなるユーザ定義のテーブル、データディクショナリにもアクセスすることが可能です。
-
複数のユーザが同時にアクセスするような状況を再現できますか
再現可能です。
TGは負荷がけを行う際に仮想クライアントを複数生成し、この仮想クライアントからトランザクションを実行します。なお、TGではこれらの仮想クライアントを"Agent"と呼びます。 Agentの生成可能な数は1~2000です。各Agentはそれぞれ独立して動作を行います。
-
一定の法則でキーを生成し、キーを基に異なるデータにアクセスできますか
可能です。
TGでは5種類("整数型"、"文字列型"、"日付型"、"リスト型"、"Agent-ID")の型の乱数がサポートされています。これらの乱数をWhere句の条件に設定することで、トランザクションを実行するたびに異なるデータへアクセスすることができます。
-
データベースへの接続/切断が繰り返されるような状況を再現できますか
再現可能です。
TGのパラメータ"Execution Count"と"Reconnect Wait"パラメータを使用することにより、Agent(仮想クライアント)は一定回数トランザクションを実行した後データベースから切断、ウェイトした後、データベースへ再接続を行います。
-
Oracle以外のデータベースには対応していますか
対応しています。
TGバージョン"0.80"より、ORACLE以外のデータベースにも対応を開始しました。現在動作確認がとれているものは「MySQL」と「PostgreSQL」、「MS SQL Server」です。またその他のデータベースについても、JDBCドライバが提供されているものであれば、基本的にTGは動作することが可能です。
-
トランザクションとしてPL/SQL(ORACLE)を実行できますか
実行可能です。
コンフィグレーションファイル(tg.conf)のSTATEMENT句に「call <ストアドプロシージャ名>」と記載することで、トランザクションとしてストアドプロシージャをコールすることができます。
なお、現在トランザクションとして実行可能なものは以下です。
- INSERT, DELETE, UPDATE
- SELECT
- COMMIT,ROLLBACK
- CREATE, DROP, ALTER
- GRANT, REVOKE
- TRUNCATE
- ストアドプロシージャ
-
TGを利用するにはどれぐらいのマシンスペックが必要になりますか
DBサーバにかけたい負荷の程度によります。
TGを実行するために必用となるサーバのスペック(TGの実行環境に求められる処理能力)は、一概に決定することができません。なぜなら、DBサーバに発生する負荷とは、DBサーバのH/Wスペック(CPU・メモリ・I/O)やデータベースの構造・実行するSQL文の記述方法によって、変動してしまうためです。
例えばSQL文に関しては、レスポンスがすぐに返ってくるような軽いSQL文である場合、大量にDBサーバに発行しないと(TGを高性能なサーバで実行しないと)、DBサーバに負荷はかかりません。またその一方で、大量の集計処理を行うような重いSQL文であれば、数個DBサーバに発行するだけで(TGを低スペックなサーバで実行していても)、DBサーバのリソースは消費しつくされてしまうかもしれません。
つまり、SQL文が発生させる負荷の程度によって、TGの実行環境に求められるスペックも変動するということになります。
なお、TGには複数のTGサーバを束ねて、より大きな負荷を生成する「マルチサーバ・モード」という利用方法もあります。
-
TGを時間指定で実行することはできますか
バッチファイルやシェルスクリプトと組み合わせることで可能です。
TG(およびGUI管理ツールであるTGC)には、スケジューラ機能が組み込まれていないため、単体では時間によるトランザクションの制御を行うことができません。従って現状では、TGをコマンドラインモードで実行し、外部のバッチファイルやシェルスクリプトから呼び出すことで、回避するかたちになります。
以下にTGをシェルスクリプトから実行するサンプルがあります:『Tips.13 セッション数を変更しながらテストを行うシェル』


