gpt4 book ai didi

java - java高效地将数据插入数据库

转载 作者:行者123 更新时间:2023-11-30 01:42:45 25 4
gpt4 key购买 nike

我正在构建一个应用程序,该应用程序具有一个仅用于日志记录目的的数据库。我们记录传入的交易 ID 及其开始和结束时间。该数据库中的应用程序本身没有任何用处。因此,我希望尽可能高效地执行此插入查询,而不影响应用程序本身。我的想法是在单独的线程中执行整个数据库插入代码。这样一来,数据库插入就会运行起来,不会干扰实际的工作。我想知道是否有与这种场景相关的设计模式。或者说我的思维模式是否正确。

最佳答案

你的思维模式是对的。将主线程生成的数据发布到多线程安全的阻塞队列中,并让日志记录线程循环 block 等待消息出现在队列中,然后将该消息发送到数据库并重复。

如果您的应用程序生成消息的速度可能比日志记录线程处理消息的速度快,无论这种可能性有多小,请考虑为队列提供最大容量,以便应用程序在尝试将消息排入队列时被阻止达到最大容量的事件。这将导致性能损失,但至少它会受到控制,而允许队列无限制地增长可能会以各种其他意外和令人讨厌的方式导致性能下降,甚至导致内存不足错误。

但是,请注意,普通插入操作(没有游标,也没有返回字段)的速度相当快,因此使用单独线程的 yield 可能可以忽略不计。

尝试在执行日志记录时运行基准测试:a) 根据您的计划从单独的日志记录线程,b) 从主线程内进行记录,并查看是否有任何差异。 (如果可以的话,在这里发布你的结果,其他人看到它们会很有趣。)

关于java - java高效地将数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59373314/

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