0

我有两个 java 进程,即 Ticket Creation 和 Billing Daemon。这两个进程都使用相同的 MySQL Innodb 表“计费”。工单创建主要创建计费工单,它包括用户的插入/更新工单。计费守护进程检索票,然后将计费发送给用户,最终将结果(成功/失败)更新到“计费”表。每天为成千上万的用户创建计费票,如果今天创建计费,则称为“新票”,之前创建的其他票称为“旧票”。我面临的问题是,两个进程都使用相同的表并且插入/更新记录变得非常慢。我尝试过的解决方案

1. Stopped billing while ticket creation: I got late to bill users and billing 
success rate got slow. 

当这两个过程都使用时,票证的创建变得非常缓慢,并且账单主要是针对“旧票证”而不是“新票证”发送的,失败率很高。

请建议,我该如何解决这个问题?创建“计费”的子表和主表会解决吗?或者我必须创建另一个表吗?或者有没有合适的解决方案?

Database is in Amazon RDS using MySQL Innodb. Please adivse urgently as 
my billing rate is getting really slow. 

提前致谢..

4

1 回答 1

0

这通常是事务吞吐量/并发问题。例如,在选择和修改工单时,您需要考虑锁定了多少对象以及需要多长时间。因为当这种情况发生时,您的更新事务将不会运行并等待锁定资源完成。

微调您的事务,不要锁定超出您需要的任何对象。如果您确实需要锁定它们,请确保尽快释放它。

于 2013-06-03T00:20:39.173 回答