四⼤数据库性能对⽐
华清远见培训1. 测试准备
3张表:复合主键表(3个主键),int主键表,string主键表
switch怎么设置主题4个数据库:Oracle11gr2 ,mysql 5.7 ,sqlserver2008 ,sap hana express2.0mvc模式下对数据库增删改查
⽹络环境⼤致相同,机器配置sap hana由于本⾝要求较⾼配置⾼⼀些。
2. 插⼊测试
数据库安装后默认配置测试
测试结果:
rank函数不连续单元格排名结论:
oracle>hana>sqlserver>mysql
hana数据量时长呈线性增长,插⼊效率最为稳定(速度基本保持不变5000条/s)
hana 较SQL server快⼀点,但不是很明显
复合主键表
oracle较hana效率⾼5倍以上 较sqlserver⾼5-10倍 较mysql⾼50倍以上
数据量⼤时 oracle较hana效率⾼5倍左右 较sqlserver⾼5-10倍左右
int主键表
数据量⼩时 oracle较hana效率⾼10倍左右 较sqlserver⾼10倍左右 较mysql⾼100倍
string主键表
oracle较hana效率⾼5倍左右 较mysql50倍
mysql语句转oracle
数据库基本优化后测试
hana 和 Oracle 隐式事务 不需要commit 没有设置⾃动提交
mysql和sqlserver 显性事务 默认⾃动提交(只要有sql语句就提交),提交次数增多执⾏时间延长,优化为⼀次提交。
知识点:osi七层模型中位于网络层之上的分层是
sql server和mysql在默认的情况下,是每个语句都⾃动提交的,这样100w条数据,就提交了100w次,虽然每次提交消耗的时间很少,但是乘上100w次,那就是⾮常⼤的时间了,速度⾃然就慢了。
⽽oracle和hana 是隐式事务(不⽤像sql server那样写 begin tran来显式的开启事务),也就是⼀堆的sql都在⼀个事务⾥,直到⼿动commit或者rollback来提交,所以,插⼊100w数据只提交1次。
alter procedure test_while_loop_index
--参数⾃定义默认值
@start_count int,@end_count int
as
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
while@start_count<@end_count
BEGIN
INSERT INTO PERSON_INDEX VALUES(@start_count,'abc','abc','abc','abc','abc',1.1,2.2,5.55,9.9999,12,34,56,78,91,123,'sss','sss','sss','sss','sss','ss s','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss','sss',@start_count,@star t_count);
set@start_count=@start_count+1
end;
commit TRAN
END TRY
BEGIN CATCH
print'bb'
print'出现异常,错误编号:'+convert(varchar, error_number())+',错误消息:'+ error_message();
IF @@TRANCOUNT>0
BEGIN
ROLLBACK TRAN
END
END CATCH
go
测试结果:
结论:
sqlserver>oracle>mysql>hana
3. 查询测试
测试结果:
结论:
hana查询速率最快,且稳定,⼩数据量⼤数据量基本5s以内,其他随数据量增⼤查询时间明显增⼤
数据量⼤时⼀般 hana> oracle >sqlserver >mysql 数据量⼩时浮动较⼤不是很明显
1000w测试除hana外只测了⼀条Oracle,⽤的navicat软件内存容易占满强退
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论