Oracle的壓測

xuexiaogang發表於2021-12-13

自己原文公眾號: https://mp.weixin.qq.com/s/u2SdpvYvlNYk2EcPfKy0_w

之前姜老師發的這個資料。

我是認可的。

如果單CPU 是我們簡單(不一定合理)估算2萬多次。


我在上一篇的蘇伊士運河的文章中我嘗試單CPU每秒1萬次登入。


我那個一次登入是select了兩次。所以我上次寫的每秒1萬次登入,等於每秒2萬次請求。一次是取密碼,一次去取許可權。所以也差不多。我們姑且這樣論吧。


上期是MySQL版的,本期我們看看Oracle和後續的PostgreSQL版本的。


create table user (userid varchar(20),password varchar(20), primary key(userid));


create table qx (userid varchar2(20),qx varchar2(20));


create index xx on qx (userid);


create or replace procedure US as

t varchar2(10);

begin

for i in 1..500000 loop

SELECT DBMS_RANDOM.STRING ('A', 10) into t  FROM DUAL;

insert into users values ('T'||i,t);

end loop;

commit;

end;



create or replace procedure USqx as

t varchar2(10);

begin

for i in 1..500000 loop

SELECT DBMS_RANDOM.STRING ('A', 10) into t  FROM DUAL;

insert into qx values ('T'||i,t);

end loop;

commit;

end;



create or replace procedure query as

a varchar2(10);

b varchar2(10);

c varchar2(10);

d varchar2(10);

begin

for i in 1..500000 loop

SELECT userid,password into a,b  FROM users where userid='T'||i;

SELECT userid,qx into c,d  FROM qx where userid='T'||i;

end loop;

end;


我也開了三個執行緒,每個是把一個CPU用足了。50萬次,10秒完成,也就是說1秒5萬次。

在結構和邏輯以及資料量一致的情況下,可見單CPU  Oracle是MySQL的5倍。


我猜想這可能是因為Oracle的繫結變數的軟軟解析提高的能力,MySQL每個都是硬解析。


以上資料庫是Oracle19C和MySQL8 都使用預設引數,未做任何調優的資料。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2847514/,如需轉載,請註明出處,否則將追究法律責任。

相關文章