2011-05-01 2 views
1

저는 MySQL, MyISql 성능 블로그 및 일부 서적에서 몇 가지 자료를 읽었습니다.왜 Myisam이 읽기 (주로 읽기 앱)와 간단한 쿼리에 더 빠릅니까?

대부분 읽기 기반 응용 프로그램을 사용하는 경우 Innodb보다 Myisam을 사용해야합니다. 또한 Myisam에 대한 조인이 아닌 쿼리가 빠릅니다.

왜이 ... 모두 읽기 및 쓰기에 대한 더 나은 성능을 제공한다, 그래서 이노 디비는, 행 레벨 잠금이 있기 때문에 (단지 내가 생각 쓰기 위해)

단순히이 알고 싶어

을 테이블 잠금을 지원하는 경우, 귀하의 응용 프로그램이 95 % 이상> 읽고, 동일한 설명을 제공하지 않고 Myisam이 읽기에 더 빠르다고 말하는 이유는 무엇입니까?

나는 지식이있는 사람이 아래로 투표 및

답변

7

테이블 수준의 잠금을 확인하는 것이 빠르다 질문을 닫지 않고 대답 할 희망하지만, 그들이 존재 때 테이블에 다른 모든 액세스를 차단합니다. 당신이 주로 독서하는 경우, 당신은 가장 빠른 "나는 잠겨 있지 않다"수표를 얻을 수 있습니다.

로우 레벨 잠금은 다른 작업이 테이블에서 동시에 발생할 수 있지만, &을 구현하기 위해 공간/시간면에서 더 비쌉니다.

그래서 (대부분의 웹 앱에서 일반적인) 테이블에서 95 % 이상의 읽기를 수행하면 MyISAM이 우선합니다. 세션 테이블 또는 사용자 추적 테이블과 같은 일부 테이블에는 읽기와 같은 쓰기 권한이 있으며 모든 업데이트에 대해 전체 테이블을 잠그면 활성 사이트가 크롤링 속도가 느려질 수 있습니다.

다양한 테이블에 대한 인덱스 카드를 사용하여 "데이터베이스"를 생성하고 한 번에 한 명의 방문자가 사이트를 통과 할 때 어떤 일이 발생하는지 시뮬레이션하여 테스트 해보십시오. 그런 다음 5, 10 또는 50 명의 방문객이 동시에 코드를 치십시오. 세션 테이블의 테이블 수준 잠금이 쇼 스토퍼임을 신속하게 알 수 있습니다.

+0

감사합니다. – user481913