java – 在任何数据库上处理大量事务的方法?
我有一个数据转换产品,它允许在数据库中选择一个表并将源数据库中的行数据转换为目标数据库. 这是在当前产品(基于java的工作台和引擎)中处理的,一次处理1000行并且并行执行10个线程.这种方法适用于较小的数据集.但是,当我必须同时转换大量数据集(比如大约X万条记录)时 – 这种方法仍然有效,但是 >我的产品运行的主机的CPU负载很重. 我开始寻找解决方案,并通过在源/目标数据库服务器计算机上请求硬件“加强”来快速解决这个问题.这涉及到购买新的多核CPU和一些额外的RAM.事实证明,升级硬件不仅仅是唯一的问题:需要购买数据库的多个软件许可证 – 多亏了多核处理器(每个核心许可证). 所以,球现在在我的球场上,我将不得不通过改变我的产品来找到解决这个问题的方法.而且,这是我需要你帮助的地方.此时,我可以想到一种处理大负载的可能方法: Approach1 >从源数据库读取数据,将其持久保存到临时介质(文件). 从架构的角度来看,这就是我现在能想到的. 最佳答案
在不增加数据库许可证成本的情况下,您可以执行以下几项操作:
>假设您的工具在未运行数据库的计算机上运行,??增加了该计算机的CPU功耗,或者您的工具允许它在多台计算机上运行,??那么您的工具正在使CPU负载过重. 此外,如果您使用插入而不是批量插入,则存在巨大的改进潜力.普通插入的问题是它将信息写入日志,以便可以回滚事务. 在this案例中,我能够帮助某人将加载时间从10小时减少到6分钟:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |