首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有最佳插入/秒性能的数据库?

具有最佳插入/秒性能的数据库?
EN

Stack Overflow用户
提问于 2010-08-19 16:30:15
回答 11查看 55.5K关注 0票数 15

我们部署了一个(基于AJAX的) Instant messenger,它由Comet服务器提供服务。我们要求将发送的邮件存储在数据库中,以便长期存档,以满足法律保留要求。

在这种一次写入、永不读取(极少数例外)的要求中,哪个数据库引擎提供了最佳性能?

我们需要至少5000个插入/秒。我假设MySQL和PostgreSQL都不能满足这些要求。

对更高性能的解决方案有什么建议吗?HamsterDB,SQLite,MongoDB?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-08-19 16:40:42

如果您永远不会查询数据,那么我根本不会将其存储到数据库中,您的性能永远不会超过将它们写入平面文件的性能。

您可能要考虑的是扩展问题,当将数据写入平面文件的速度变慢时会发生什么,您会投资更快的磁盘,还是其他什么。

另一件要考虑的事情是如何扩展服务,以便您可以添加更多的服务器,而不必协调每个服务器的日志并手动合并它们。

编辑:你写过你想要把它放在数据库里,然后我也会考虑把数据放在网上的安全问题,当你的服务被破坏时会发生什么,你希望你的攻击者能够改变所说的历史吗?

更明智的做法是将其临时存储到一个文件中,然后将其转储到一个站点外的位置,如果您的互联网前端遭到黑客攻击,该位置将无法访问。

票数 26
EN

Stack Overflow用户

发布于 2010-08-19 22:46:15

请忽略上面的基准测试,我们里面有一个bug。

我们插入了1M条记录,列如下: id (int),status (int),message (140个字符,随机)。所有测试都是在台式PC i5上使用500 GB Sata磁盘上的C++驱动程序完成的。

使用MongoDB进行基准测试:

1M记录插入不带索引的

代码语言:javascript
复制
time: 23s, insert/s: 43478

1M记录使用Id上的索引插入

代码语言:javascript
复制
time: 50s, insert/s: 20000

接下来,我们将1M条记录添加到具有索引和1M条记录的同一个表中

代码语言:javascript
复制
time: 78s, insert/s: 12820

所有这些都会在文件系统上产生接近4 4gb的文件。

使用MySQL进行基准测试:

1M记录插入不带索引

代码语言:javascript
复制
time: 49s, insert/s: 20408

1M记录使用索引插入

代码语言:javascript
复制
time: 56s, insert/s: 17857

接下来,我们将1M条记录添加到具有索引和1M条记录的同一个表中

代码语言:javascript
复制
time: 56s, insert/s: 17857

完全相同的性能,mysql在增长上没有损失

我们看到Mongo在这次测试中消耗了大约384MB的内存,并加载了3个核心,MySQL对14MB感到满意,只加载了1个核心。

Edorian的建议是正确的,我将做更多的基准测试,我相信我们可以达到2倍四核服务器50K插入/秒。

我认为MySQL将是正确的选择。

票数 42
EN

Stack Overflow用户

发布于 2010-08-19 16:39:02

如果你不需要做查询,那么数据库就不是你需要的。使用日志文件。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3519972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档