複数のクエリを使用した負荷テストを実施する際に、TRANSACTION GENERATOR というソフトが便利そうでしたのでご紹介を。
■TRANSACTION GENERATOR を使用した SQL Server の負荷テスト
TRANSACTION GENERATOR は Java で作成された GUI を持つ無償のデータベース負荷ツールになります。
SQL Server の場合、SQL Server and SQL Azure Performance Testing: Enzo SQL Baseline や SQLQueryStress のようなツールで特定のクエリを複数スレッドで実行し、負荷をかけることができますが TRANSACTION GENERATOR では複数のクエリを割合を指定して実行することができます。
検索条件のパラメーターも設定することができ、実行結果を分散させることができます。
インストールはウィザードに従えば完了するのですが SQL Server の場合は、JDBC Driver を追加する必要があります。
投稿を書いている時点の最新の JDBC Driver はこちらになります。
Microsoft JDBC Driver 4.0 for SQL Server
sqljdbc_4.0.2206.100_jpn.exe をダウンロードし展開し、[sqljdbc.jar] [sqljdbc4.jar] を [C:Program FilesTransaction Generator.92lib] にコピーすれば SQL Server に対して負荷テストを実行することができます。
SQL Server 向けのサンプルファイルが [C:Program FilesTransaction Generator.92samplessmpl_oltp_sqlserver_v0.7.tgp] に用意されていますのでこれを開けば、基本的な設定は行われた状態となります。
SQL Server への接続は SQL Server 認証で実行されていますので、インスタンスで SQL Server 認証を有効にする必要があります。
サンプルファイルを使用して負荷テストをする場合は、
- [Jobs] → [Configure Jobs] をクリック
- [Database] の [JDBC URL] をテストをするインスタンスの情報に変更
- [Jobs] の [0.CREATE_DATABASE] の [Username] と [Password] を SQL Server 認証の情報に変更
- [0.CREATE_DATABASE] の [Script] からログイン test のパスワードをパスワード規則を満たす値に変更
- [1] ~ [3] のパスワードを 4. で設定したパスワードに設定
- [Agents] の [Password] を 4. で設定したユーザー名とパスワードに設定
- [OK] を押して設定を反映し、[Jobs] の [Execut specified job] から [0] ~ [3] のジョブを順次実行
でデータベースの準備をして
- [Agent] → [Make agents connect ~] をクリック
- TG Status の [CONNECTED] がすべて接続されていることを確認
# このタイミングで SQL Server に接続されます。 - [Agent] → [Active agents] をクリックして負荷テストを実行
- 負荷テストを終了する場合は、[Agents] → [Freeze agents] をクリックしてテストを終了
- 、[Agents] → [Make agents disconnect ~] をクリックして接続を解除
で負荷テストを実施することができます。
TPS モニターからどれくらいのトランザクションを実行しているかを確認することができます。
デフォルトではコネクション数は 10 となっていますが、接続数を増やすことができ、複数の端末を使用して負荷をかけるということもできるようですので用途は広そうですね。