之前姜老师发的这个数据。
图片
我是认可的。
如果单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 都使用默认参数,未做任何调优的数据。
剩下还有一篇PG的。我会补上的。
最后说一下星辰大海这歌挺好听。