2011-03-28 6 views
14

'show engine innodb status'를 사용하면 해당 wordpress에는 두 개의 교착 상태가 있음을 알 수 있습니다. 나는 이것들을 깨끗이하고 싶습니다. 그러나 나는이 cmds들 중 하나 (IE는 무언가를 죽이고 잘하면 롤백을 강요하는 것)에 대한 활성화 된 프로세스를 보지 못합니다.트랜잭션 교착 상태가 확실합니까?

스레드 ID, 쿼리 ID 등을 볼 수 있지만 두 작업을 중지하는 데 사용할 수있는 것은 없습니다.

해결 방법에 대한 제안 사항은 무엇입니까?

편집 :

------------------------ 
LATEST DETECTED DEADLOCK 
------------------------ 
110327 10:54:14 
*** (1) TRANSACTION: 
TRANSACTION 9FBA099E, ACTIVE 0 sec, process no 14207, OS thread id 1228433728 starting index read 
mysql tables in use 1, locked 1 
LOCK WAIT 2 lock struct(s), heap size 376, 1 row lock(s) 
MySQL thread id 12505112, query id 909492800 juno....edu 129....54 wordpress_user updating 
DELETE FROM wp_options WHERE option_name = ''_site_transient_timeout_theme_roots'' 
*** (1) WAITING FOR THIS LOCK TO BE GRANTED: 
RECORD LOCKS space id 4951009 page no 4 n bits 384 index `option_name` of table `wordpress_work`.`wp_options` trx id 9FBA099E lock_mode X waiting 
Record lock, heap no 309 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
0: len 30; hex 5f736974655f7472616e7369656e745f74696d656f75745f7468656d655f; asc _site_transient_timeout_theme_; (total 35 bytes); 
1: len 8; hex 0000000000002b6d; asc  +m;; 

*** (2) TRANSACTION: 
TRANSACTION 9FBA0995, ACTIVE 0 sec, process no 14207, OS thread id 1230031168 starting index read 
mysql tables in use 1, locked 1 
3 lock struct(s), heap size 1248, 2 row lock(s) 
MySQL thread id 12505095, query id 909492789 juno....edu 129.....54 wordpress_user updating 
DELETE FROM wp_options WHERE option_name = ''_site_transient_timeout_theme_roots'' 
*** (2) HOLDS THE LOCK(S): 
RECORD LOCKS space id 4951009 page no 4 n bits 384 index `option_name` of table `wordpress_work`.`wp_options` trx id 9FBA0995 lock_mode X locks rec but not gap 
Record lock, heap no 309 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
0: len 30; hex 5f736974655f7472616e7369656e745f74696d656f75745f7468656d655f; asc _site_transient_timeout_theme_; (total 35 bytes); 
1: len 8; hex 0000000000002b6d; asc  +m;; 

*** (2) WAITING FOR THIS LOCK TO BE GRANTED: 
RECORD LOCKS space id 4951009 page no 4 n bits 384 index `option_name` of table  `wordpress_work`.`wp_options` trx id 9FBA0995 lock_mode X waiting 
Record lock, heap no 309 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
0: len 30; hex 5f736974655f7472616e7369656e745f74696d656f75745f7468656d655f; asc _site_transient_timeout_theme_; (total 35 bytes); 
1: len 8; hex 0000000000002b6d; asc  +m;; 

*** WE ROLL BACK TRANSACTION (1) 
+0

'KILL query-id'가 작동해야합니까? – Konerak

+0

하지만 'show processlist'를 통해 쿼리가 표시되지 않습니다. – ethrbunny

+0

연결을 종료해야한다고 생각합니다. –

답변

19

같은 일부 '이노 상태'출력을 감안할 때 : : 여기 상태의 (? 관련) 부분의

---TRANSACTION 0 0, not started, process no 1024, OS thread id 140386055603968 
MySQL thread id 197, query id 771 localhost marc 
show innodb status 

은 당신이 원하는 것은

KILL QUERY 771 

교착 상태에있는 두 쿼리 중 하나를 종료합니다. 쿼리가 종료되지만 연결은 열린 채로 두십시오. 연결을 끊으려면 KILL 197을 사용하십시오.

+3

'알 수없는 스레드 ID '중 ​​하나를 시도 중입니다. – ethrbunny

+2

mysql의 최신 버전에서는'show engine innodb status' 여야합니다. 5.6.10에 있고'show innodb status'는 유효한 명령이 아닙니다. –

+3

나는 비슷한 상황을 만났다. 이것은'show' 명령 구문과 관련이 없습니다. 'show processlist'는 이러한 쿼리와 관련된 어떤 연결도 보여주지 않기 때문에 MySQL API의 레벨이 아닌 스토리지 엔진의 레벨에서 유지되는 데드락 트랜잭션을 의미합니다. 이런 문제를 해결할 수있는 유일한 방법은 MySQL 서비스를 다시 시작하는 것입니다. – Sender

7

나는 이것이 오래되었다는 것을 알고 있지만 일반적으로 교착 상태가 발생하여 교착 상태를 유발 한 앱이 오래 동안 이동했기 때문에 이와 같은 것을 볼 때 일반적으로 교착 상태의 피해자에게 경고가 표시되고 실패하거나 기록됩니다 오류 또는 재 시도, 그리고 어느 쪽의 방법으로 다른 생산적인 것들로 이동했습니다. 교착 상태의 원인을 조사하고 향후 교착 상태를 피하기 위해 소프트웨어를 작성하는 경우 일반적으로 다른 작업을 수행 할 필요가 없습니다. Wordpress에서 작업하지 않는 경우 Wordpress 등의 소프트웨어 만 사용하는 경우 교착 상태를 가능한 버그로보고 할 수 있습니다.

4

'show engine innodb status'를 사용하면 해당 wordpress에는 두 개의 교착 상태가 있음을 알 수 있습니다. 해결 방법에 대한 제안?

생각 나는 유사한 문제를 해결하는 데 도움이 될만한 몇 가지 정보를 제공 할 것입니다. 자바 고정 된 자물쇠를 일으키는 최대 절전 모드 문제를보고있었습니다. 우리는에서 저점 출력을 빗질하여 잠금을 발견

show engine innodb status; 

이 정보의 쓰레기 톤을 뱉는 다. 관련 섹션은 TRANSACTIONS 섹션에 있습니다. 당신의 출력에서 ​​관련 문제가 될 것으로 보인다 : 우리를 위해

3 lock struct(s), heap size 1248, 2 row lock(s) 
MySQL thread id 12505095, query id 909492789 juno....edu 129.....54 

그것이 붙어 잠금을 지시 # lock struct(s)했다. 죽일하려면 지정된 "스레드 ID 번호"를 사용하여 실행해야합니다 -이 경우 :

kill 12505095 

지역의 MySQL뿐만 아니라 AWS MySQL의 RDS에서 일했다. 우리는 또한 다음을 참조

우리의 거래에서

섹션 :

---TRANSACTION 644793773, ACTIVE 21 sec 
2 lock struct(s), heap size 360, 1 row lock(s) 
MySQL thread id 217, OS thread handle 0x2aef097700, query id 10177 1.3.5.7 mpsp cleaning up 

우리는 2 lock struct(s)ACTIVE 21 sec 메시지 모두를 찾습니다.

관련 문제