谢谢各位的回复!
@
tinkerer #2 我也同意你的观点。[这个回答](
https://stackoverflow.com/a/4060838/8883222) 说,只要同一时间只有一个 writer ,那么应该也是没问题的(1 writer n readers)。如果真的是 cgo 的问题的话,那么这个问题在 Go 里面可能就暂时没有解决办法了,可能只能用 C++达到一百万 qps 的性能了。
@
xupefei 应该是可以的,我觉得 Bedrock 的测试挺好的。想请教一下,其他的常用的数据库大约能达到怎么样的性能呢?会比一百万 qps 低很多吗?
@
lloovve 谢谢你分享的链接,看起来这个人测试的结果都在 10 万 qps 以下,[这个帖子](
https://turriate.com/articles/making-sqlite-faster-in-go)也测试了`mattn/sqlite3`,得出的 qps 也是类似的水平。
@
wtfdsy 谢谢你的分享它用的也是`inmemory`模式(`mode=memory`),我把它用内存模式和不用内存模式都测了一次,性能上的差距不是很大,主贴里面的测试结果(`avg read = 0.0107`)是没有用内存模式的,用内存模式的结果大约是(`avg read = 0.009xxx`)。
现在看起来,用 C++(或者 C )跟用 Go 的性能差别有点大啊,但是我们是希望能用 Go 来达到这个性能目标的(百万级或者不差太远的 qps ),不知道各位还有没有其他的想法呢?
对了,其实我也在`mattn/go-sqlite3`这个仓库里面提了[差不多的的问题](
https://github.com/mattn/go-sqlite3/issues/1022),但是回复我的人好像也是没啥头绪。