内容简介:gkvdb v1.5版本之后增加了binlog和事务支持,并且整合了缓存功能,整体性能得到极大提升,以下是gkvdb v1.5的性能测试报告,包括与leveldb的性能对比。此外,本次数据库性能测试对比中去掉了boltdb,因为…实在是太难等了,具体可以参考本次同样分别从100W、500W、1000W的写入、查询、删除次数及耗时,计算对应的每次操作耗时平均数,用以衡量性能,同时本次增加了gkvdb和leveldb在不同并发线程下的性能比较。
gkvdb v1.5版本之后增加了binlog和事务支持,并且整合了缓存功能,整体性能得到极大提升,以下是gkvdb v1.5的性能测试报告,包括与leveldb的性能对比。
此外,本次数据库性能测试对比中去掉了boltdb,因为…实在是太难等了,具体可以参考 gkvdb v1.0性能测试报告 。
本次同样分别从100W、500W、1000W的写入、查询、删除次数及耗时,计算对应的每次操作耗时平均数,用以衡量性能,同时本次增加了gkvdb和leveldb在不同并发线程下的性能比较。
需要注意的是,
1、为方便测试,使用的KV数据是按照 key_xxx => value_xxx 顺序递增的,而不是使用的随机数据,因此对于leveldb来说性能会有所提高;
2、以下的时间单位为微秒(μs),1微秒(μs)=0.001毫秒(ms)=0.000001秒(s);
3、性能测试的源代码在请查看 这里 ;
测试环境
系统:Ubuntu Desktop 14.04.5 x64 LTS
芯片:Intel(R) Core(TM) i7-7700K
硬盘:Intel SSD 256G
内存:8G
软件:gkvdb v1.5
测试结果
性能对比:gkvdb、leveldb
总结:
1、gkvdb v1.5的性能比v1.0提升了不少,主要源于以下三点:
1)、增加了binlog设计,写入/删除操作只会追加到binlog中,再由异步线程执行数据同步,不会直接写入/修改到底层数据库文件中,这样便减少了IO操作,提高写入/删除效率;
2)、增加批量操作接口,先将数据在内存中打包,随后一次性写入到binlog,这样减少了IO操作次数,提高写入/删除效率;
3)、增加事务操作接口,与底层数据库文件操作采用不同的互斥锁,在并发请求中便提高了处理效率;
2、gkvdb在与leveldb的对比中,均采用了批量操作方式,且批量数及并发数保持一致,在单线程下的写入/删除效率差两者别不大,但是在并发量大的情况下gkvdb性能就明显比leveldb优异,估计主要源于gkvdb良好的锁机制设计;
3、需要注意的是,本次gkvdb的读取操作完全是基于磁盘操作(虽然gkvdb在binlog的操作中有缓存支持,但是本次测试刻意让binlog同步到底层数据库文件后再进行比较,因此便去掉了缓存支持),虽然在数据上比leveldb要差一些,但是整体的读取性能表现已经相当不错。 gkvdb采用的是纯 go 语言开发,没有使用特定性的系统功能,包括mmap,因此gkvdb的跨平台性很好,但是在读取性能上却做了一定牺牲,不过通过良好的算法和IO设计弥补了这块性能损失,因此在非缓存模式下,读取性能也非常优异。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 微服务测试之性能测试
- Go 单元测试和性能测试
- 性能测试vs压力测试vs负载测试
- SpringBoot | 第十三章:测试相关(单元测试、性能测试)
- Golang 性能测试 (2) 性能分析
- 随行付微服务测试之性能测试 原 荐
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
大型网站技术架构演进与性能优化
许令波 / 电子工业出版社 / 2018-6 / 79
《大型网站技术架构演进与性能优化》从一名亲历者的角度,阐述了一个网站在业务量飞速发展的过程中所遇到的技术转型等各种问题及解决思路。从技术发展上看,网站经历了Web应用系统从分布式、无线多端、中台到国际化的改造;在解决大流量问题的方向上,涉及了从端的优化到管道到服务端甚至到基础环境优化的各个层面。 《大型网站技术架构演进与性能优化》总结的宝贵经验教训可以帮助读者了解当网站遇到类似问题时,应如何......一起来看看 《大型网站技术架构演进与性能优化》 这本书的介绍吧!