따라서 성능 문제와 관련하여 Performance in PDO/PHP/MySQL: transaction versus direct execution을 읽은 후에 MySQL에 대한 테이블 잠금에 대한 연구를했습니다. http://dev.mysql.com/doc/refman/5.0/en/table-locking.htmlMySQL의 잠긴 테이블이 관련 뷰에 영향을 줍니까?
테이블 잠금에
동시에, 에서 테이블에서 읽어 많은 세션을 가능하게하지만 세션이 테이블에 기록하고자하는 경우, 먼저 독점 액세스 할 수 있어야합니다. 업데이트 중에이 특정 테이블에 액세스하려는 다른 모든 세션은 업데이트가 완료 될 때까지 대기해야합니다.
이 부분은 특히 대부분의 쿼리가 삽입이 아닌 업데이트가 될 것이기 때문에 저를 강타했습니다. 나는 모든 업데이트/삽입이 수행 된 foo라는 테이블을 만든 다음 모든 선택이 발생한 foo_view (foo 사본 또는 foo 및 여러 다른 테이블과 foo의 연결) 뷰를 작성했는지 궁금합니다. 잠금 문제가 계속 발생합니까?
즉, foo_view에 대한 SELECT 쿼리는 여전히 업데이트가 foo에서 끝날 때까지 기다려야합니까?
동료가 물어 본 또 다른 간단한 질문입니다. 이것은 캐싱에 영향을 줍니까? 나는. SELECT가 캐시되면 캐시에 도달하고 결과를 리턴 할 것인가, 아니면 잠금이 먼저 완료 될 때까지 기다릴 것인가?
답변 해 주셔서 감사합니다. 나는 캐싱에 대해 물어보기 위해 나의 질문을 수정했다. 쿼리가 캐시 된 경우 잠금이 잠금을 대신합니까? 아니면 잠금이 열린 후에 만 캐시 된 쿼리 결과가 반환됩니까? – CogitoErgoSum
@CogitoErgoSum : 아니요, 쿼리 계획 캐싱은 격리 수준에 영향을주지 않습니다. –
OMG 조랑말 감사합니다! – CogitoErgoSum