我是数据库管理的新手。我试图找出死锁异常的原因,但我无法理解日志。
日志显示“事务 1 已回滚”。为什么会这样?赌注表与帐户表有外键关系,但它(运行插入的反式)无法获得 S 锁并因此因死锁而死亡是否“正常”?我的意思是,考虑到它只是验证参照完整性的读取,这似乎很糟糕。
第二笔交易也在写入赌注表,但没有更新。那么是用于创建 auto-inc 键的“机制”还是索引机制或两者都导致死锁?为什么它们不会以连续的方式发生?或者可能是他们,但某种等待时间太短了。
任何帮助,指针,进一步阅读如何使用下面的日志来解决死锁问题表示赞赏。
111031 17:39:26
*** (1) TRANSACTION:
TRANSACTION 0 984899905, ACTIVE 180 sec, process no 10882, OS thread id 1104619856 inserting
mysql tables in use 1, locked 1
LOCK WAIT 13 lock struct(s), heap size 3024, undo log entries 86
MySQL thread id 122, query id 28932942 localhost 127.0.0.1 bt update
INSERT INTO wager (amount_won, confirmation, created_by_partner, creation_date, description, fantasy_league,
first_game_start, image_thumb, image_wide, kind, last_game_start, last_update_version, locked, name,
num_future, num_past, num_present, partner, …
Run Code Online (Sandbox Code Playgroud)