JdbcrunnerでSnowflakeに負荷テスト
概要
JdbcrunnerでSnowflakeに負荷を掛けてみる手順です。
インストール
JdbcrunnerをDownloadして適当なディレクトリに配置(今回は/opt下に配置)します。
$ ls /opt/ jdbcrunner-1.3
Snowflakeのjdbc-driverをDownloadし、jdbcrunner-1.3/libjdbc下に配置します。
$ ls /opt/jdbcrunner-1.3/libjdbc snowflake-jdbc-3.12.2.jar
スクリプト準備
Snowflake内にTPC-Hのデータセットがあるので、クエリを投げるスクリプトを記述します(参考)。
$ vim ./scripts/sf_tpc-h.js // JdbcRunner settings ----------------------------------------------- // Snowflake(Database/Schema/Wherehouseを指定) var jdbcUrl = "jdbc:snowflake://xxxxxxx.us-east-1.snowflakecomputing.com/?db=snowflake_sample_data&schema=tpch_sf1&warehouse=compute_wh"; // User/Password指定 var jdbcUser = "hoge"; var jdbcPass = "hogehoge"; // 測定前のアイドルリング秒数 var warmupTime = 10; // 測定時間秒数 var measurementTime = 60; // 起動エージェント数 var nAgents = 4; // Application settings ---------------------------------------------- // JdbcRunner functions ---------------------------------------------- function init() { // リザルトキャッシュをOffにする(Onにして計測したい場合はコメントアウト) query("ALTER SESSION SET USE_CACHED_RESULT=FALSE"); } function run() { // https://docs.snowflake.com/ja/user-guide/sample-data-tpch.html#functional-query-definition query("select \ l_returnflag, \ l_linestatus, \ sum(l_quantity) as sum_qty, \ sum(l_extendedprice) as sum_base_price, \ sum(l_extendedprice * (1-l_discount)) as sum_disc_price, \ sum(l_extendedprice * (1-l_discount) * (1+l_tax)) as sum_charge, \ avg(l_quantity) as avg_qty, \ avg(l_extendedprice) as avg_price, \ avg(l_discount) as avg_disc, \ count(*) as count_order \ from \ lineitem \ where \ l_shipdate <= dateadd(day, -90, to_date('1998-12-01')) \ group by \ l_returnflag, \ l_linestatus \ order by \ l_returnflag, \ l_linestatus \ "); } function fin() { }
実行
$ cd /opt/jdbcrunner-1.3.jar $ export CLASSPATH=jdbcrunner-1.3.jar:/opt/jdbcrunner-1.3/libjdbc/snowflake-jdbc-3.12.2.jar $ java JR ./scripts/sf_tpc-h.js