(8.0.22)
CPUコア数=2
drop table tab1;
create table tab1 ( col1 int);
alter table tab1 add constraint tab1pk primary key(col1);
drop procedure proc1;
delimiter //
create procedure proc1(in x int)
begin
declare i int;
set i = 0;
start transaction;
while i < x do
set i = i + 1;
insert into tab1 values(i);
end while;
commit;
end
//
delimiter ;
call proc1(1000000);
drop procedure proc2;
delimiter //
create procedure proc2()
begin
while true do
start transaction;
commit;
end while;
end
//
delimiter ;
call proc2();
確認結果:
空コミットなし→ 24.65 sec
空コミットあり→ 24.65 sec
影響なし
(19c)
https://kagamihoge.hatenablog.com/entry/2014/03/09/195716
CPUコア数=2
drop table tab1 purge;
create table tab1 ( col1 int);
create index ind1 on tab1(col1);
alter table tab1 add constraint tab1pk primary key(col1) using index ind1;
set time on
set timing on
declare
begin
for i in 1..1000000 loop
insert into tab1 values(i);
end loop;
commit;
end;
/
declare
begin
while true loop
commit;
end loop;
end;
/
確認結果:
空コミットなし→ 経過: 00:00:20.46
空コミットあり→ 経過: 00:00:22.31
影響ほぼなし
(13)
CPUコア数=2
drop table tab1;
create table tab1 ( col1 int);
alter table tab1 add constraint tab1pk primary key(col1);
\timing 1
do $$
declare
begin
for i in 1..1000000 loop
insert into tab1 values(i);
end loop;
end
$$
;
create or replace procedure proc1()
language plpgsql
as $$
begin
while true loop
commit;
end loop;
return;
end;
$$
;
call proc1();
確認結果:
空コミットなし→ 時間: 4499.790 ミリ秒
空コミットあり→ 時間: 4421.127 ミリ秒
影響なし
(2019)
CPUコア数=2
drop table tab1;
create table tab1 ( col1 int not null);
alter table tab1 add constraint tab1pk primary key(col1);
create or alter procedure proc1
as
begin
set nocount on
declare @i integer;
set @i = 1;
begin transaction;
while @i <= 100000
begin
insert into tab1 values(@i);
set @i = @i + 1;
end
commit;
end
declare @time datetime2 = sysdatetime()
exec dbo.proc1;
select datediff(millisecond, @time, sysdatetime()) as ms
set nocount on
while 1=1
begin
begin transaction;
commit;
end
確認結果:
空コミットなし→ 24094 ms
空コミットあり→ 41985 ms
影響あり