0

次の問題が発生しました: mysql テーブルの 1 つの列をインクリメントしようとすると、トラフィックの負荷が高いと値が同期しなくなります。

タスクは、列をインクリメントすることと、別のテーブルに新しい行を追加することの 2 つに分割されます。したがって、100 行を追加すると、カウンターは 100 のままになります。

100リクエスト/秒などの高負荷では、カウンターに問題が発生し、カウンター値で80を取得しましたが、120行が追加されました。

//This is the current increment routine build with an Yii ActiveRecord Class
$id = 123;
$dataRow = ActiveRecordModel::model()->findByPK($id);
$dataRow->counter +=1;
$dataRow->save();

//Add the row 
$row = new ActiveRecordModelRow();
$row->operatingSystem = 1;
$row->save();

問題は、一部のリクエストが他のリクエストよりも速く処理され、値を上書きする可能性があることだと思います。誰かが私を正しい方向に向けるのを手伝ってくれるか、この問題を解決する方法を提案してくれることを願っています.

ベスト、ニルス

4

1 に答える 1