SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Jdbc Runner を SQL Server に対して実行する際のメモ

leave a comment

JdbcRunner には、テストキットとして、Tiny sysbench / Tiny TPC-B / Tiny TPC-C のシナリオが含まれており、このテストキットでは Oracle / MySQL / PostreSQL を対象として実行ができるようになっています。

JdbcRunnert と SQL Server の組み合わせについて調べてみたところ、データベース負荷テストツールまとめ (5) (公開版)HP ProLiant Server + InfiniBand + IOアクセラレータ + CLUSTERPRO 検証報告 で SQL Server に対して実行したことが紹介されており、この検証では Tiny TPC-C を使用して SQL Server 2008 R2 に対して実行されていました。

私も SQL Server に対して実行してみたので、その際の作業メモを。

SQL Server に対して実行する際のポイント

JDBC の接続設定

SQL Server に対して JdbcRunner を実行する際には、SQL Server 用 JDBC Driver を使用する必要があり、現時点の最新バージョンは 10.2 となっています。

SQL Server のデータアクセスコンポーネントの暗号化設定の既定が変更されています でも触れましたが、このバージョンの JDBC Driver では、接続プロパティの初期設定で変更されているものがあります。

JDBC の接続の設定については 接続プロパティの設定 に記載されていますが 10.2 では、「encrypt=true」がデフォルトとなっています。

この設定がデフォルトとなっている場合、「com.microsoft.sqlserver.jdbc.SQLServerException: ドライバーが SSL (Secure Sockets Layer) 暗号化による SQL Server への安全な接続を確 立できませんでした。エラー: "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"」が発生し、SQL Server に接続ができないケースがあります。

このエラーが出た場合は「-jdbcUrl "jdbc:sqlserver://localhost;encrypt=false;"」というように「encrypt=false」となるように設定を行うことで接続ができるようになると思います。

 

テストキットのデータロードスクリプトに SQL Server 用の設定を追加

テストキットに含まれている「xxx_load.js」では、RDBMS 毎に処理が分岐されており、SQL Server 向けの定義は含まれていませんので、そのまま実行すると「Microsoft SQL Server is not supported yet.」となり、SQL Server に対してのデータロードを実行することができません。

SQL Server 向けのデータロード処理についてはテストキットに含まれている処理を参考にして、次のように SQL Server 向けの処理を追加することで対応ができます。

image

 

テストキットの処理の変更

Tiny TPC-B (tpcb.js) については、そのままで動作したのですが、Tiny TPC-C (tpcc.js) については「FOR UPDATE」の互換性の問題で、SQL Server に対してはそのままでは実行することができませんでした (SQL Server では SELECT ~ FOR UPDATE がサポートされていないため)

SQL Server 向けに対応をするのであれば「WITH (UPDLOCK)」「WITH (ROWLOCK)」辺りを設定できるようにクエリを書き換える必要があるかと思います。

Share

Written by Masayuki.Ozawa

5月 12th, 2022 at 9:49 am

Posted in SQL Server

Tagged with

Leave a Reply