2010-04-19 6 views
1

mysql 버전 5.0.18 사용 테이블 TT를 생성 중입니다. 클라이언트 1 은 autocommit = false를 설정합니다. 트랜잭션 시작 테이블 생성 TT select * from PT;선택을 사용하여 테이블을 생성하는 동안 테이블 잠금

PT가 견인 열 PK 널되지 BIGINT 가지고 이름 varchar (20)

클라이언트 2 설정된 자동 커밋 = PT 값으로 거짓 개시 트랜잭션 인서트 (123 '문자'); PT에 행을 삽입하는 동안 테이블 Client 1이 커밋하기를 기다리고 있습니다. 행을 삽입 할 수 없습니다. 왜? 클라이언트 1이 커밋을 기다리지 않고 행을 삽입 할 수 있습니까?

+0

isam 테이블 또는 innodb입니까? – MJB

+0

그들은 innodb 테이블입니다. 그것은 MySQL은 v5.1에서 잘 작동하지만 5.0.18에서 유스 케이스를 구현하는 다른 방법이 있습니다 – John

+0

잘 모르겠습니다 - 죄송합니다. – MJB

답변

1

필자가 보았던 것에서, MySQL은 select 문에서 테이블을 때때로 잠급니다. 자세한 내용은 this을 참조하십시오. 그러나 InnoDB 테이블은 로우 레벨 잠금을 사용하는 반면 다른 많은 테이블 유형은 테이블 레벨 잠금을 사용한다고합니다. show table status from dbname을 입력하면 무엇이 있는지 확인할 수 있습니다.

희망이 도움이됩니다.

업데이트 : 당연히 말하자면, 나는 내 이해를 테스트하러 갔고 나는 틀 렸습니다. 그것은 isam인지 innodb인지에 관계없이 잠급니다.

관련 문제