0

問題: 表を使用して Web サイトの画像のクリックを追跡しようとしています

`click_counts(image_id int(10) NOT NULL, 
 image_clicks int(10) NOT NULL DEFAULT 0, 
 PRIMARY KEY (image_id))Engine=InnoDB;

このテーブルはクエリを使用して更新されます

INSERT INTO click_counts (image_id, image_clicks) 
VALUES ( ? , 1) 
ON DUPLICATE KEY UPDATE image_clicks = image_clicks + 1; 

この実装に同時にアクセスすると、競合が発生します。mysql のスロー クエリ ログには、同じ image_id に対して複数の挿入ステートメントが表示されます。これは、行レベルのロックにより (同じ行を更新するための) 挿入ステートメントが互いにブロックされていることを意味します。この問題に対するスケーラブルで非ブロッキングのソリューションは何でしょうか? これは、私が初めて使用する一般的なユースケースだと思います。

提案をお待ちしております。

4

0 に答える 0