안녕하세요.. 이문제로 며칠동안 헤매고 있습니다..ㅜㅜ
mysql을 사용하여 MyISAM 디비를 생성하였습니다.
웹사이트를 구축하여 운영하는 도중 슬로우 쿼리로 인하여 성능이 저하되더군요.
슬로우 쿼리로 인하여 테이블 lcok이 발생하여 다른 쓰레드에서 해당 테이블로 접근 할수 없다는걸 알게 되었는데요..
여기서 궁금한건..
1.A 테이블에 select를 한 상태에서 다른 쓰레드에서 A 테이블에 select를 하였을시에 lock이 발생하나요?
2.만약 lock이 발생한다면 결국 A 테이블에 select는 하나의 쓰레드만 가능하며 나머지는 대기상태로 있게 되는걸 의미하는지요?
3.또..A 테이블과 같은 뷰를 생성하여 동시에 뷰로 select를 하고 A 테이블에는 insert 혹은 update 시에 lock이 발생할까요?
4.슬로우 쿼리로 인하여 lock이 발생하게 되어 성능이 저하되는데 이걸 해결할수 있는 방법은 어떤것이 있을까요?
5.oreder by를 쿼리에 포함시키면 속도가 느려지는것을 테스트를 통해 확인하였는데요..만약 order by를 쓰지 않는다면 정렬 기능은 어떻게 구현할수 있을까요?
고수님들이 답변 부탁드립니다..ㅎ |