Oracle/MySQL向け負荷テスト・性能測定ツール Transaction Generator - トランザクション・ジェネレータ -

サンプルの使い方

  1. 前提条件
  2. サンプルトランザクションの
    ロード
  3. サンプルスキーマ・ダミーデータの
    作成
  4. トランザクションの実行
  5. 性能の測定
  6. トランザクションの終了
  7. サンプルスキーマの削除
  • トップ
  • ダウンロード
  • 使用方法

サンプルの使い方

ここではTGに添付しているORACLE用のサンプルトランザクションの使用方法について説明しています。本サンプルはOLTP系のトランザクションを意識した非常にシンプルなオブジェクトとSQL文によって構成されています。

1. 前提条件

まずはじめに負荷がけ対象のデータベースが以下の条件を満たしていることを確認してください。もし不足があるような場合には、適宜データベースの設定を変更するか、もしくはサンプル「smpl_oltp_oracle_vX.X.tgp」の設定内容を修正してください。

DBサーバIPアドレス 192.168.100.100
SID名 testdb
LISTENERポート番号 1521
DBユーザSYSTEMのパスワード manager
サンプルデータ格納用表領域 USERS
一時表領域 TEMP

2. サンプルトランザクションのロード

TGCを起動します。エクスプローラから「tgc.exe」ファイルをダブルクリックするか、コマンドプロンプトより以下のように入力してください。


C:\> cd tg09X
C:\tg09X> tgc

続いてTGCのメインウィンドウより「File」メニューをクリックし、「Open」を選択、サンプル設定ファイル「smpl_oltp_oracle_vX.X.tgp」をロードしてください。

3. サンプルスキーマ・ダミーデータの作成

サンプルスキーマの作成(ジョブ「1.BUILD_SCHEMA」の実行)

サンプルトランザクションを実行するためのスキーマを作成します。「Jobs」メニューをクリック、「Execute specified Job」を選択、「1. BUILD_SCHEMA」ジョブを実行してください。

以下にジョブ「1.BUILD_SCHEMA」が正常に実行された場合の結果を示します。


TG> execute job 1

>> Execute job No : 1 [ 1.BUILD_SCHEMA ]

SQL No.0 : create user TEST identified by test
default tablespace USERS
temporary tablespace TEMP
System altered.

SQL No.1 : grant CONNECT,RESOURCE to TEST
System altered.

SQL No.2 : create table TEST.ITEMLIST(
ITEM_ID number,
CATEGORY number,
ITEM_NAME varchar2(32),
DESCRIPTION varchar2(255))
nologging
System altered.

SQL No.3 : create table TEST.ORDERCOUNT(
ITEM_ID number,
ORDER_COUNT number)
nologging
System altered.

SQL No.4 : create table TEST.ORDERLIST(
ORDER_ID number,
ITEM_ID number,
ORDER_DATE date)
System altered.

SQL No.5 : create sequence TEST.SEQ_ORDER_ID start with 1 increment
by 1 nomaxvalue nominvalue nocycle nocache
System altered.

SQL No.6 : select object_name, object_type from dba_objects
where owner = 'TEST' order by object_type
SEQ_ORDER_ID SEQUENCE
ORDERLIST TABLE
ORDERCOUNT TABLE
ITEMLIST TABLE
4 rows selected.
Specified job successfully executed.

TG>

本ジョブが正常に完了した場合、以下のオブジェクトが作成されます。

DBユーザ TEST
テスト用テーブル x 3 ITEMLIST
ORDERCOUNT
ORDERLIST
テスト用シーケンス SEQ_ORDER_ID

ダミーデータの作成(ジョブ「2. GENERATE_DATA」の実行)

続いてダミーデータの作成を行います。「Jobs」メニューをクリック、「Execute specified Job」を選択、「2. GENERATE_DATA」ジョブを実行してください。

以下にジョブ「2. GENERATE_DATA」が正常に実行された場合の結果を示します。


TG> execute job 2

>> Execute job No : 2 [ 2.GENERATE_DATA ]
declare
   ITEM_ID number;
   CATEGORY number;
begin
   ITEM_ID := 1;
   CATEGORY := 1;
   for i in 1..1000 loop
      for ii in 1..50 loop
         insert /*+APPEND*/ into ITEMLIST values(
         ITEM_ID,
         CATEGORY,
         'N2345678901234567890123456789012',
         'D2345678901234567890123456789012345678901234567890123456789
         insert /*+APPEND*/ into ORDERCOUNT values(ITEM_ID, 0);
         ITEM_ID := ITEM_ID + 1;
      end loop;
      CATEGORY := CATEGORY + 1;
      commit;
   end loop;
end;

Specified job successfully executed.

TG>

本ジョブが正常に完了した場合、50000件のダミーデータが、テーブル「ITEMLIST」「ORDERCOUNT」に挿入されます。なおこの処理にはDBサーバのスペックにもよりますが数分時間がかかることがあります。

インデックスの作成(ジョブ「3. BUILD_INDEXES」の実行)

最後にインデックスを生成します。「Jobs」メニューをクリック、「Execute specified Job」を選択、「3. BUILD_INDEXES」ジョブを実行してください。この処理にもまたある程度時間がかかる場合があります。

以下にジョブ「3. BUILD_INDEXES」が正常に実行された場合の結果を示します。


TG> execute job 3

>> Execute job No : 3 [ 3.BUILD_INDEXES ]

SQL No.0 : alter table TEST.ITEMLIST
add constraint PK_ITEMLIST_ITEM_ID primary key(ITEM_ID)
System altered.

SQL No.1 : create index TEST.IDX_ITEMLIST_CATEGORY on 
TEST.ITEMLIST(CATEGORY)
System altered.

SQL No.2 : alter table TEST.ORDERCOUNT
add constraint PK_ORDERCOUNT_ITEM_ID primary key(ITEM_ID)
System altered.

SQL No.3 : alter table TEST.ORDERLIST
add constraint PK_ORDERLIST_ORDER_ID primary key(ORDER_ID)
System altered.

SQL No.4 : create index TEST.IDX_ORDERLIST_ITEM_ID on 
TEST.ORDERLIST(ITEM_ID)
System altered.

SQL No.5 : create index TEST.IDX_ORDERLIST_ORDER_DATE on 
TEST.ORDERLIST(ORDER_DATE)
System altered.

SQL No.6 : alter table TEST.ITEMLIST logging
System altered.

SQL No.7 : alter table TEST.ORDERCOUNT logging
System altered.

SQL No.8 : select object_name, object_type from dba_objects
where owner = 'TEST' order by object_type
PK_ITEMLIST_ITEM_ID INDEX
IDX_ORDERLIST_ITEM_ID INDEX
PK_ORDERLIST_ORDER_ID INDEX
PK_ORDERCOUNT_ITEM_ID INDEX
IDX_ORDERLIST_ORDER_DATE INDEX
IDX_ITEMLIST_CATEGORY INDEX
SEQ_ORDER_ID SEQUENCE
ORDERLIST TABLE
ITEMLIST TABLE
ORDERCOUNT TABLE
10 rows selected.
Specified job successfully executed.

TG> 

4. トランザクションの実行

TGCのメインウィンドウより「Agent」メニューをクリックし、「Make agnets connect to the target database」を選択、Agentをターゲットデータベースに接続させます。

続いてTGCメインウィンドウより「Agent」メニューをクリックし、「Activate agents」を選択してください。これにより負荷がけ(トランザクションの実行)が開始されます。

なお、ここで実行されるトランザクションとは、以下の2種類のSQL文によって構成されています。トランザクション名「VIEW_ITEMS」は90%、「ORDER」は10%の確率でそれぞれ実行されます。

トランザクション名 実行確立 SQL
VIEW_ITEMS 90%
select * from ITEMLIST
where CATEGORY = :VAL_CATEGORY;
ORDER 10%
insert into ORDERLIST values
(SEQ_ORDER_ID.nextval,
:VAL_ITEM_ID,
sysdate);
update ORDERCOUNT
set ORDER_COUNT = ORDER_COUNT + 1
where ITEM_ID = :VAL_ITEM_ID;
commit;

また上記「:VAL_CATEGORY」と「:VAL_ITEM_ID」は乱数です。各乱数がとりうる値の範囲は次のようになっています。

乱数名 生成される値の範囲
:VAL_CATEGORY 1 ~ 1000
:VAL_ITEM_ID 1 ~ 50000

5. 性能の測定

トランザクションを実行させた状態で性能測定を行います。TGCのメインウィンドウより「Monitor」メニューをクリックし、「Monitoring start > Show summary」を選択します。

コンソール画面にトランザクションの実行状態が出力されます。一番右端の「TPS:」の値が、1秒間当たりのトランザクション実行数です。


TG> monitor 600
Monitoring start. [ 600 Seconds ]
21:23:09 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10
21:23:10 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10
21:23:11 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10
21:23:12 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10
21:23:13 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10
21:23:14 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10
21:23:15 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10

デフォルトでは10分後に計測が終了します。「Average TPS:」の値が10分間あたりの平均TPS値になります。


21:33:07 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10
21:33:08 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10
---- TRANSACTION REPORT ( SUMMARY ) ------------------

MONITORING PERIOD
~~~~~~~~~~~~~~~~~
  - Begin : Sat May 10 21:23:09 JST 2008
  - End   : Sat May 10 21:33:08 JST 2008

THROUGHPUT
~~~~~~~~~~
  Transaction name  Min   Max Average
  ================ ==== ===== =======
  VIEW_ITEMS       0ms  109ms  4.48ms
  ORDER            0ms  266ms  8.62ms

TPS
~~~
  - Total transaction count : 5975
  - Monitoring time         : 600 seconds
  - Average TPS             : 9.96

TG>

計測を途中で終了させたいような場合には「Monitor」メニューをクリックし、「Monitoring stop forcely」を選択してください。また計測期間を変更する場合は「Specify monitoring period」を選択し、計測時間を秒単位で入力してください。

6. トランザクションの終了

トランザクションを終了したい場合には、まず「Agent」メニューより「Freeze agents」を選択し、トランザクションの実行を停止させます。

続いて「Agent」メニューより「Make agents disconnect from the target database」を選択し、セッションを終了させてください。

7. サンプルスキーマの削除

サンプルトランザクション用に作成したデータやオブジェクトを削除したい場合には、「Jobs」メニューをクリック、「Execute specified Job」を選択、「4. DROP_SCHEMA」ジョブを実行してください。

以下にジョブ「4. DROP_SCHEMA」が正常に実行された場合の結果を示します。


TG> execute job 4

>> Execute job No : 4 [ 4.DROP_SCHEMA ]

SQL No.0 : drop user TEST cascade
System altered.
Specified job successfully executed.

TG>

以上でサンプルトランザクション「smpl_oltp_oracle_vX.X.tgp」の使用方法についての説明は終了です。

  • トップ
  • TGとは
  • ダウンロード
  • 使用方法
  • サポート
  • 事例紹介
  • お知らせ
  • ライセンス
  • お問い合わせ
  • 当サイトについて
  • このエントリーをはてなブックマークに追加
  • Tweet

Copyright © 2011 haruto suzuki all rights reserved.

  • お問い合わせ
  • ライセンス
  • お知らせ
  • 事例紹介
  • サポート
  • 使用方法
  • ダウンロード
  • TGとは
  • トップ

Top > 使用方法 > サンプルの使い方