왜 순위를 별도의 테이블에 저장합니까? 필요에 따라 점수를 저장하고 순위를 쿼리하거나보기를 만듭니다. 전체 테이블을 업데이트하는 것이 아니라 단일 사용자와 관련된 데이터 만 업데이트하면됩니다. InnoDB 테이블을 사용하는 경우 UPDATE 쿼리는 myISAM으로 얻는 테이블 수준 잠금 대신 행 수준 잠금을 사용합니다.
TABLE users
user_id INT PK
user_name VARCHAR
...
TABLE user_scores
user_id PK FK
score INT INDEX
wins INT INDEX
VIEW v_user_ranks
SELECT u.user_id, u.user_name, s.score, s.wins
FROM users u INNER JOIN user_scores s
ON u.user_id = s.user_id
SELECT *
FROM v_user_ranks
ORDER BY score, wins DESC
LIMIT 10
INSERT INTO user_scores (user_id, score, wins)
VALUES ($id, $score, $wins)
ON DUPLICATE KEY UPDATE score=score+$score, wins=wins+$wins
교착 상태가 20 명입니까? 당신이 Access를 사용하고있는 것 같네요. Y/N? – Sammitch
전혀 아닙니다. MySQL을 사용하고 있지만 여러 사용자가 동시에 데이터베이스에 액세스 할 때 사용자 순위 업데이트가 중복 될 수 있습니다. 교착 상태의 원인은 무엇입니까. –