負荷生成ツール

(8.0)

前提:proc_ins,proc_upd,proc_del 作成済


drop procedure proc_iud;
delimiter //
create procedure proc_iud(in param1 int,in param2 varchar(100) )
begin


while 1 = 1 do
  call proc_ins(param1,param2);
  call proc_upd(param1,param2);
  call proc_del(param1,param2);
end while;

end
//
delimiter ;


call proc_iud(100,null);


-- Aurora MySQLで動作確認

エンジンバージョン : 8.0.mysql_aurora.3.01.0
インスタンスクラス : db.r5.large
vCPU : 2
RAM : 16 GB

テーブルを100個作成(カラム数10~30)
100レコードの負荷を並列度 2で流す


mysql -h database-2.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p -e "create database test"
mysql -h database-2.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p test 
mysql -h database-2.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p'password' test -e "call proc_iud(100,null)" > /dev/null 2>&1 &

 

結果
CPU = 99%
使用可能なメモリ (MB) = 5966
トップ待機 = checking permissions

挿入スループット (カウント/秒) = 1346
書き込みスループット (MB/秒) = 項目なし
書き込みレイテンシー (ミリ秒) = 3.0

SELECT スループット (カウント/秒) = 0
読み込みスループット (MB/秒) = 項目なし
読み込みレイテンシー (ミリ秒) = 0

※パフォーマンスインサイトでプロシージャ内のSQLは見えない

 

-- RDS MySQLで動作確認


エンジンバージョン : 8.0.27
インスタンスクラス : db.r5.large
vCPU : 2
RAM : 16 GB

テーブルを100個作成(カラム数10~30)
100レコードの負荷を並列度 2で流す


mysql -h database-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p -e "create database test"
mysql -h database-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p test 
mysql -h database-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p'password' test -e "call proc_iud(100,null)" > /dev/null 2>&1 &

 

結果
CPU = 58%
使用可能なメモリ (MB) = 13628
トップ待機 = CPU

書き込み IOPS (カウント/秒) = 944
書き込みスループット (MB/秒) = 9.5
書き込みレイテンシー (ミリ秒) = 0.4

読み取り IOPS (カウント/秒) = 0
読み込みスループット (MB/秒) = 0
読み込みレイテンシー (ミリ秒) = 0

※パフォーマンスインサイトでプロシージャ内のSQLは見えない

(19c)
https://dev.classmethod.jp/articles/rds-for-oracle-supports-multitenant-cootainer-db/


前提:proc_ins,proc_upd,proc_del 作成済


set serveroutput on 
create or replace procedure proc_iud(param1 in number default 100,param2 in varchar2 default null)
authid current_user
as

begin
  while 1 = 1 loop
    proc_ins(param1,param2);
    proc_upd(param1,param2);
    proc_del(param1,param2);
  end loop;
end;
/
show error;


exec proc_iud(100,null);

 

 

-- RDS Oracleで動作確認


エンジンバージョン : 19.0.0.0.ru-2021-10.rur-2021-10.r1
インスタンスクラス : db.r5.large
vCPU : 2
RAM : 16 GB

テーブルを100個作成(カラム数10~30)
100レコードの負荷を並列度 2で流す

sqlplus oracle/password@database-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:1521/ORCL <<EOF > /dev/null 2>&1 &
exec proc_iud(100,null);
EOF


結果
CPU = 95%
使用可能なメモリ (MB) = 2953
トップ待機 = CPU

書き込み IOPS (カウント/秒) = 110
書き込みスループット (MB/秒) = 8.6
書き込みレイテンシー (ミリ秒) = 2.5

読み取り IOPS (カウント/秒) = 11
読み込みスループット (MB/秒) = 0.1
読み込みレイテンシー (ミリ秒) = 0.2

※パフォーマンスインサイトでプロシージャ内のSQLも見える

 

(13)

前提:proc_ins,proc_upd,proc_del 作成済

create or replace procedure proc_iud(param1 in int default 100, param2 in varchar(100) default null)
language plpgsql
as $$
declare

begin
  while 1 = 1 loop
    call proc_ins(param1,param2);
    call proc_upd(param1,param2);
    call proc_del(param1,param2);
  end loop;
end;
$$;


call proc_iud(100,null);

 

-- Aurora PostgreSQLで動作確認


エンジンバージョン : 13.4
インスタンスクラス : db.r5.large
vCPU : 2
RAM : 16 GB

テーブルを100個作成(カラム数10~30)
100レコードの負荷を並列度 2で流す

PGPASSWORD=password psql -h database-1.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -p 5432 -U postgres -c "create database test"
PGPASSWORD=password psql -h database-1.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -p 5432 -U postgres -d test
PGPASSWORD=password psql -h database-1.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -p 5432 -U postgres -d test -c "call proc_iud(100,null)" > /dev/null 2>&1 &


結果
CPU = 96%
使用可能なメモリ (MB) = 3649
トップ待機 = CPU

書き込み IOPS (カウント/秒) = 22885
書き込みスループット (MB/秒) = 4.9
書き込みレイテンシー (ミリ秒) = 0.08

読み取り IOPS (カウント/秒) = 0
読み込みスループット (MB/秒) = 0
読み込みレイテンシー (ミリ秒) = 0

※パフォーマンスインサイトでプロシージャ内のSQLは見えない


-- RDS PostgreSQLで動作確認


エンジンバージョン : 13.4
インスタンスクラス : db.r5.large
vCPU : 2
RAM : 16 GB

テーブルを100個作成(カラム数10~30)
100レコードの負荷を並列度 2で流す

PGPASSWORD=password psql -h database-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -p 5432 -U postgres -c "create database test"
PGPASSWORD=password psql -h database-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -p 5432 -U postgres -d test
PGPASSWORD=password psql -h database-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -p 5432 -U postgres -d test -c "call proc_iud(100,null)" > /dev/null 2>&1 &


結果
CPU = 95%
使用可能なメモリ (MB) = 10846
トップ待機 = CPU

書き込み IOPS (カウント/秒) = 277
書き込みスループット (MB/秒) = 15.6
書き込みレイテンシー (ミリ秒) = 2.3

読み取り IOPS (カウント/秒) = 0
読み込みスループット (MB/秒) = 0
読み込みレイテンシー (ミリ秒) = 0

※パフォーマンスインサイトでプロシージャ内のSQLは見えない

(2019)


前提:proc_ins,proc_upd,proc_del 作成済

create or alter procedure proc_iud(@param1 int = 100,@param2 varchar(100) = null)
as
begin
set nocount on;
while 1 = 1
  begin
    exec proc_ins @param1, @param2;
    exec proc_upd @param1, @param2;
    exec proc_del @param1, @param2;
  end
end
go

 

exec proc_iud 10, null;


-- RDS SQL Serverで動作確認


エンジンバージョン : 15.00.4073.23.v1
インスタンスクラス : db.r5.large
vCPU : 2
RAM : 16 GB

テーブルを100個作成(カラム数10~30)
100レコードの負荷を並列度 2で流す


sqlcmd -S database-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -U sa -Q "create database test"
sqlcmd -S database-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -U sa -d test
sqlcmd -S database-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -U sa -P 'password' -d test -Q "exec proc_iud 10, null" > /dev/null 2>&1 &

 

結果
CPU = 54%
使用可能なメモリ (MB) = 14030
トップ待機 = CPU

書き込み IOPS (カウント/秒) = 267
書き込みスループット (MB/秒) = 0.9
書き込みレイテンシー (ミリ秒) = 0.8

読み取り IOPS (カウント/秒) = 0
読み込みスループット (MB/秒) = 0
読み込みレイテンシー (ミリ秒) = 0

※パフォーマンスインサイトでプロシージャ内のSQLは見える