小编mro*_*man的帖子

如何处理每秒约 1k 次插入

假设每秒有大约 1k 个请求需要插入。

现在,互联网上对此有很多答案……但在这种特定情况下,它们在技术上是错误的。是的,几乎任何 RDBMS 都可以在标准硬件上每秒处理 1k 次插入,但如果且仅当您放弃 ACID 保证时。令人惊讶的是,互联网上有多少可怕的答案。例如“您可以随时扩展 CPU 和 RAM”,这应该可以每秒提供更多插入次数,但这不是它的工作原理。限制因素是磁盘速度或更精确:您实际上可以将多少事务刷新/同步到磁盘。这是棘手的一点。

在体面的“商品硬件”上(除非您投资于高性能 SSD),这就是您可以期待的:

  • SQLite:30 次插入/秒
  • MySQL:80 次插入/秒

这是您可以在保持 ACID 保证的同时插入的速率。这实质上意味着,如果您有一个每秒 100 个帖子的论坛……您无法通过这样的设置来处理它。

读取请求不是问题。您每秒可以有数千个读取请求,但写入请求通常小于每秒 100 个。

因此,这个问题专门针对如何在保持 ACID 保证的同时处理每秒 1k 次插入 - 假设单个节点每秒可以处理大约 80 个事务。

我可以看到这种工作的一种方法是,如果您在应用程序逻辑中的某处缓冲插入并将它们作为更大的事务提交到数据库(同时让客户端等待事务结束),如果您只需要单个插入,这应该可以正常工作,尽管它很复杂应用逻辑相当多。

performance transaction acid

1
推荐指数
2
解决办法
7079
查看次数

标签 统计

acid ×1

performance ×1

transaction ×1