可以使用以下幾種方法來查詢MySQL是否發生了死鎖:
1. SHOW ENGINE INNODB STATUS命令:執行此命令可以獲取InnoDB引擎的狀態信息,包括最近發生的死鎖情況。找到"LATEST DETECTED DEADLOCK"部分,如果有死鎖發生,會顯示相關的信息。
2. 執行SELECT語句:可以執行一條簡單的SELECT語句來判斷是否發生了死鎖。如果發生死鎖,會拋出Deadlock found when trying to get lock錯誤。
3. 查詢information_schema.INNODB_LOCKS和information_schema.INNODB_LOCK_WAITS表:使用這兩個表可以查詢當前正在被鎖定的事務和等待鎖的事務。如果有事務在等待鎖,并且出現循環等待的情況,那么可能發生了死鎖。
4. 監控工具:可以使用MySQL的監控工具,如Percona Toolkit或MySQL Enterprise Monitor,來監控并報告死鎖情況。
需要注意的是,死鎖是一種隨機事件,可能并不頻繁發生,因此查詢是否發生死鎖需要在適當的時間段內進行觀察。