设计问题:从低延迟C ++应用程序更新数据库

时间:2011-08-15 20:22:58

标签: c++ database performance

我正在用C ++开发低延迟应用程序。我还需要更新我的处理数据库和所有状态更改。为了节省调用数据库更新所涉及的延迟,我在我的应用程序中使用本地数据结构(内存中)。

但我仍然需要更新数据库。我应该使用单独的线程来更新数据库吗?如何节省数据库延迟并使数据库保持最新状态。

3 个答案:

答案 0 :(得分:6)

对于最小延迟,你肯定需要一个数据库线程(我称之为DBT) 但是,如果更新频繁,您将需要缓冲更改,并让DBT在将其推送到实际数据库之前合并它可以进行的任何更新。如果player.x = 1,则player.x = 2,DBT可以跳过第一个。 如果更新非常快,并且数据集不是很大,您可以考虑定期完全转储而不是运行更新。例如,像每隔60秒“保存”你正在做的事情,而不是向数据库发送每个动作的列表。 答案很大程度上取决于你在做什么。这里没有一个通用的答案。

答案 1 :(得分:0)

有一个绝对好的解决方案:尽可能保存到数据库。你不必每秒都打电话保存,在大多数情况下你可以安全地每分钟拨一次DB,甚至更少。

答案 2 :(得分:0)

结合给定的答案并应用我自己的想法,我正在考虑实施以下策略: - - 在运行中,更新本地数据结构并转储到文件而不是数据库 - 数据库的单独线程将从文件读取并将其转储到数据库(实际上必须锁定并移动现有文件并将内容复制到数据库)

你说什么? 上面这个解决方案的任何漏洞。