제목 | PDO::lastInsertId 테이블 잠금이 필요한가요?? | ||
---|---|---|---|
카테고리 | DB | ||
글쓴이 | 카카메론바 | 작성시각 | 2017/04/11 12:02:11 |
|
|||
안녕하세요^^ 따듯한 봄이 왔네요~ 환절기 감기 조심하세요~ ---- MySQL을 대상으로 하는 PDO::lastInsertId() 이 메서드를 수행할때... 테이블 락을 걸어야 하나요?? 제가 생각하기엔 락을 걸필요없다고 느껴지는데;; 100% 확신하지 못해 이렇게 질문을 드려봅니다. 제가 현재 수정중에 있는 레거시코드에 가령 아래와 같은 코드들이 좀 있습니다. >> LOCK TABLES 주소록 WRITE; >> INSERT address .... $idx = $dbh->lastInsertId(); >> UNLOCK TABLES; 대상 테이블에는 idx는 primary key 에 auto_increment 가 설정되어 있습니다.
테이블 락을 꼭 걸어야 하는 걸까요?? |
|||
다음글 | 'xxx..xls의 형식이 파일 확장명에서 지정한 형식... (4) | ||
이전글 | 특정 url로 변경되도록 처리 하고싶습니다. (1) | ||
kaido
/
2017/04/11 12:17:07 /
추천
0
|
카카메론바
/
2017/04/11 13:00:26 /
추천
0
답변감사합니다^^ 결국 판단이군요 ㅠㅡㅠ |
락을 거는 이유만 아시면 해답이 나올것 같습니다.
락을 거는 가장 큰 이유는 교차 데이터 방지를 위해서 입니다.
이 작업이 끝나기 전에는 다른 작업을 받지 않겠다. 라는 의미입니다.
insertId 의 경우에는 락을 걸어야 할 수도 있긴 합니다.
이유는 삽입된 테이블 레코드의 가장 마지막 번호를 알기 위해서 인데,
2개가 빠르게 삽입되어버려서 1번째 id 마저 2번째 id 로 나올 수도 있기 때문입니다만... 보통 이런 경우는 보기 드물긴 합니다.
더불어 락이 무조건 좋은건 아닙니다. 당연하게도 테이블 접근을 막기 때문에 해당 테이블에 대한 접근이 느려집니다.
락 걸고 해제 하지 않은 채로 프로세스가 죽어버릴 경우, 좀비가 되어서 테이블 접근을 막아버리는 불상사가 발생 하니, 락은 조심해서 사용 하시는 것이 좋습니다.
판단은 본인이 하시면 됩니다 ㅎㅎ