2

私は Mysql で非常に大きなデータを扱っています。テーブルの 1 つは、常に更新クエリが発生している約 400 万行で構成されています。

この更新クエリはしばらく前までスムーズに実行されていましたが、行が増加するにつれて、ロック待機タイムアウト エラーに関する深刻な問題が発生しました。

私が得た唯一の解決策はを増やすことですが、innodb_lock_wait_timeoutそのエラーを解決するための実際には悪いオプションであるどこかを読みました。

を増やさずにこの問題を解決する方法を教えてくださいinnodb_lock_wait_timeout。変数time_outを増やすとデータベース全体で増加するため、他の解決策を探していますが、非常に多くのレコードを持つ1つのテーブルのみのトランザクション時間を増やしたいです。

4

1 に答える 1

0

「このクエリは cron ジョブの助けを借りて行われ、何千ものクエリが同じテーブルで同時に発生します」

そこに問題があります。cron ジョブは、mysql ではなく有罪の当事者です。あなたは最近転換点に達したと思います。データをより少ない数のクエリに結合する必要があります。次の行に沿った何か:

INSERT INTO users
(userid, total_received_credits, credit_amount, credit_amount) , 
values(51016 , 2.0, 2.0,  '2012-04-17 16:39:50'), 
(44016 , 3.0, 3.0,  '2012-04-17 16:39:50'), 
(11116 , 2.0, 2.0,  '2012-04-17 16:39:50') 
ON DUPLICATE KEY update total_received_credits = VALUES(total_received_credits) , 
total_received_credits = VALUES(total_received_credits), 
total_received_credits = VALUES(total_received_credits), 
credit_amount = VALUES(credit_amount)
于 2012-05-04T02:01:47.420 に答える