2
我有一個紙牌遊戲,其中用戶排名遊戲贏得了多少遊戲。總體評價是預先計算的,以便能夠快速加載,但我有關於排名計算的問題。智能用戶排名計算
排名的計算方法如下:
SET @userRank = 0;
UPDATE t_ratings AS r
JOIN
(
SELECT
userId, (@userRank := @userRank + 1) as rank
FROM (
SELECT
r.userId,
r.solvedCount,
r.playedCount
FROM
t_ratings AS r
ORDER BY r.solvedCount DESC , r.playedCount ASC) AS t
) AS rt
ON rt.userId = r.userId
SET r.rank = rt.rank
但最近我開始變得有時以下錯誤:
Deadlock found when trying to get lock; try restarting transaction
因此,我想知道是否有更好的方法來計算用戶排名以避免死鎖?
在[dba.se]似乎更合適。投票遷移。 –