Oracle的压测

自己原文公众号: 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 都使用默认参数,未做任何调优的数据。



请使用浏览器的分享功能分享到微信等