クエリ、挿入、更新、削除などのデータベース操作のパフォーマンステストを行う必要がある場合は、Performance Testing (PTS) の JDBC API を使用して、シミュレートされた負荷下で SQL ステートメントをデータベースに直接送信します。このトピックでは、JDBC テストシナリオのデータベース接続、認証情報、および SQL 設定の構成方法について説明します。
PTS は、次のデータベースタイプをサポートしています:MySQL、PostgreSQL、MariaDB、SQL Server。
前提条件
開始する前に、次の項目を準備してください:
PTS コンソールへのアクセス
対象のデータベースインスタンスのエンドポイント、ポート、およびデータベース名
SQL ステートメントの実行に必要な権限を持つデータベースアカウント
JDBC テストシナリオの作成
PTS コンソールにログインします。
左側のナビゲーションペインで、[Performance Test] > [Create Scenario] を選択し、[PTS] をクリックします。
デフォルトの HTTP API を削除し、JDBC API を追加します。
基本リクエストパラメータを設定します。パラメータの説明については、次のパラメータ表を参照してください。
パラメータを次の表に示します。
パラメータ
説明
例
[API 名]
API のサービス定義を識別する名前です。最大長:20 文字。
API-1[データベースタイプ]
接続するデータベースのタイプです。有効な値:MySQL、PostgreSQL、MariaDB、SQL Server。
MySQL
[データベース URL]
<host>:<port>/<database_name>形式のデータベース接続文字列です。詳細は、後述の「データベース URL 形式」をご参照ください。rm-bp1xxxxxxx.mysql.rds.aliyuncs.com:3306/mydb[ユーザー名]
データベース認証に使用するユーザー名です。
test_user[パスワード]
データベース認証に使用するパスワードです。
your_password[SQL]
実行する SQL ステートメントです。先頭は
SELECT、UPDATE、INSERT、DELETEのいずれかである必要があります (大文字と小文字は区別されません)。詳細は、後述の「SQL ステートメントのガイドライン」をご参照ください。select * from test_users;[タイムアウト期間]
データベースサーバーからのレスポンスを PTS が待機する最大時間 (ミリ秒) です。
5000[制限]
結果セットから読み取る最大行数です。
SELECTステートメントにのみ適用します。最大値:1,000,000。1000
データベース URL 形式
[データベース URL] は、ホストアドレス、ポート番号、およびデータベース名を組み合わせた接続文字列です。データベースタイプに応じて、次の形式を使用してください:
| データベースタイプ | デフォルトポート | URL の例 |
|---|---|---|
| MySQL | 3306 | rm-bp1xxxxxxx.mysql.rds.aliyuncs.com:3306/mydb |
| PostgreSQL | 5432 | pgm-bp1xxxxxxx.pg.rds.aliyuncs.com:5432/mydb |
| MariaDB | 3306 | rm-bp1xxxxxxx.mariadb.rds.aliyuncs.com:3306/mydb |
| SQL Server | 1433 | rm-bp1xxxxxxx.sqlserver.rds.aliyuncs.com:1433/mydb |
プレースホルダーは実際の値に置き換えてください:
| プレースホルダー | 説明 | 例 |
|---|---|---|
<host> | データベースインスタンスのエンドポイントまたは IP アドレス | rm-bp1xxxxxxx.mysql.rds.aliyuncs.com |
<port> | ポート番号 (デフォルトポート、または設定されている場合はカスタムポート) | 3306 |
<database_name> | 対象データベースの名前 | mydb |
注: 上記のポート番号はデフォルト値です。データベースでカスタムポートを使用している場合は、ポート番号を適切な値に置き換えてください。
SQL ステートメントのガイドライン
[SQL] フィールドには、次のいずれかのキーワードで始まるステートメントを指定できます (大文字と小文字は区別されません):
| キーワード | 操作 | 例 |
|---|---|---|
SELECT | データのクエリ | select * from test_users where status = 'active'; |
INSERT | レコードの追加 | insert into test_users (name, email) values ('test', 'test@example.com'); |
UPDATE | レコードの変更 | update test_users set email = 'new@example.com' where id = 1; |
DELETE | レコードの削除 | delete from test_users where id = 1; |
負荷テストの考慮事項
SELECT ステートメントでは制限パラメータを設定してください。 負荷テスト中に結果セットが大きいとメモリを消費し、パフォーマンスメトリクスが不正確になる可能性があります。テストシナリオに適した値に [制限] を設定してください。
現実的な SQL ステートメントを使用してください。 意味のあるパフォーマンスデータを得るために、
WHERE句や結合を含む、実運用のクエリを反映したステートメントを作成してください。タイムアウト値を監視してください。 SQL ステートメントに大規模なテーブルや重い結合が含まれる場合は、負荷テスト中の誤った失敗検知を避けるために[タイムアウト期間]を増やしてください。