通过上万个请求/秒,我希望看到 60,000 -> +90,000 个请求/秒。
我的设置包括以下内容:
用户 ---> Web 应用程序 --> 消息队列 --> 解析器 --> 数据库?
我应该提到,解析器目前可以使用 COPY 解析/填充大约 18750 条记录/秒,因此在我们开始添加更多解析器之前,我们在这方面受到限制——这对我来说现在不是一个大问题。
我有一个系统,需要能够尽可能快地批量上传尽可能多的记录。这个相同的系统(或者它可以根据您的处理方式而有所不同)应该能够响应分析类型的查询,例如:
wonq = "从玩家 = '@player' 和 " + "(type = 'award' or type = 'return') and hand = hand_num" lostq = "从 player = 'player' 和 " + 的操作中选择 sum(amount) “输入!='award'并输入!='return'和hand = hand_num”
.....10-15 千次(每个用户),因为它们被锁定到另一个表。不用说,我们现在将这些结果分页为 10/页。
我查看了以下内容:(假设这些都在同一台服务器上)
mysql (reg. run of the mill rdbms)——能够进入 15-20,000 个请求/秒的范围;在当前条件下,如果我们尝试扩展它,我们每次需要扩展时都需要一个单独的主机/数据库——这是不可行的
couchdb(面向文档的数据库)——没有打破 700 个请求/秒;我真的希望这能拯救我们的屁股——不是机会!
vertica(面向列的数据库)——达到 60000 个请求/秒,封闭源代码,非常昂贵;这仍然是一个选择,但我个人根本不喜欢它
tokyocabinet(基于哈希的数据库)——目前的重量为 45,000 次插入/秒和 66,000 次选择/秒;昨天当我写这篇文章时,我使用了一个基于 FFI 的适配器,它的性能大约为 5555 个请求/秒;这是迄今为止我见过的最快最棒的数据库!
兵马俑——(vm集群)目前正在与jmaglev一起评估它(不能等到maglev本身出来)——这是最慢的!
也许我只是错误地解决了这个问题,但我总是听说 RDBMS 非常慢 - 那么我听说过的这些超快速系统在哪里?
测试条件::
只是让人们知道我在我的开发盒上的规格是:
双 3.2ghz 英特尔,1 gig ram
Mysql mysql.cnf 编辑为:
key_buffer = 400M # 是 16M innodb_log_file_size = 100M # 之前不存在 innodb_buffer_pool_size = 200M # 之前不存在
更新::
事实证明,terracotta 可能在我们的应用程序结构中占有一席之地,但它不会很快替换我们的数据库,因为它的速度很糟糕,而且它的堆利用率很糟糕。
另一方面,我很高兴看到 tokyocabinet 的 NON-FFI ruby 库(意思是 tyrant/cabinet)超级快,现在它是第一名。