插入,选择和更新查询会降低整个服务器的速度

时间:2012-10-08 07:47:42

标签: java mysql database jdbc

我有一个处理超过10000000个数据的应用程序。

MainTable拥有超过10000000个数据

我正在尝试将数据插入主表中的子表中

INSERT INTO SubTable(Value1,Value2)
SELECT Value1,Value2 FROM MainTable
GROUP BY Value1_ID;

在SubTable中执行某些处理后。我将新值更新为主表

UPDATE MainTable inf,SubTable in
SET inf.Value1=in.Value1, inf.Value2=in.Value2
WHERE inf.Value1_ID= in.Value1_ID;

运行此查询时,整个服务器变得非常慢并且它会停止整个其他事务。我在这里使用JDBC驱动程序管理器连接。怎么避免这个?如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果您只需要偶尔执行一次,而不是在单个更新中更新整个表,则可以设置一个小脚本,按批次行更新每个几秒钟/分钟左右。其他进程将在两次更新之间自由执行查询 例如,通过每分钟更新一批100,000行,如果您的表具有正确的索引,则需要1~2个小时,但对性能的影响要小得多。

另一个解决方案是当服务器上的活动处于最低时(或许在周末结束时)进行更新,这样你就不会对其他进程造成太大影响