gpt4 book ai didi

java - IO With Callback 设置数据库状态

转载 作者:行者123 更新时间:2023-12-02 12:12:48 25 4
gpt4 key购买 nike

给这个

public void do(RequestObject request, Callback<RequestObject> callback);

处理请求时调用Callback的位置。一个客户端必须将请求的状态设置到数据库。客户端获取一些项目并将它们传递给上述方法,并且回调设置状态。

它对于少量项目和较慢的 IO 工作正常。但现在IO速度加快,写入数据库的状态变化频繁。这导致我的数据库(MySQL)发出如此多的磁盘读写调用。我的磁盘使用率急剧上升。

我正在考虑聚合状态设置,但权力不可靠,这不是一个合理的解决方案。应该如何重新设计?

编辑

当流程启动时,我插入一个值,当有更新时,我获取该项目并更新该项目。 @user2612030你的问题让我相信,使用 hibernate 可能是导致读取次数超过必要次数的原因。

我可以将我的磁盘驱动器升级为 SSD,但这只能做这么多。我想要一个可扩展的解决方案。

最佳答案

SSD 是一个很好的起点,更多的 RAM 给 MySQL 也应该有所帮助。它无法摆脱写入,但如果有足够的 RAM(并且 MySQL 配置为使用它!),那么物理读取应该很少。如果您使用的是默认配置,请对其进行调整。例如,参见https://www.percona.com/blog/2016/10/12/mysql-5-7-performance-tuning-immediately-after-installation/或者直接搜索 MySQL 内存配置。

您还可以添加磁盘并将写入分布到具有多个 Controller 的多个磁盘。这应该也会有一点帮助。

如果不知道如何记录状态值,就很难提供好的建议。插入还是更新?有多少条记录?数据模型?然而,要真正扩展,您需要以某种方式对数据进行分片。这样,一台服务器可以处理一个范围内的数据,另一台服务器可以处理另一个范围内的数据,依此类推。

对于写入量大的应用程序来说,使用 MySQL 设置起来并不简单,除非您在应用程序代码中进行分片。大多数具有复制功能的解决方案最适合以读取为主的应用程序。您可能想要研究 NoSQL 数据库,例如 MongoDB,它从一开始就被设计用于分发写入。 MongoDB 还面临其他挑战(最终一致性),但它可以提供可扩展的写入。

关于java - IO With Callback 设置数据库状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46407496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com