2013-07-24 2 views
0

나는 DB 엔진이 내 테이블을 거의 선택하지 않는다는 것에 의문을 가지고 있습니다. 나는 이미 여러 기사, 서적 및 유사한 데이터베이스 구성을 연구했지만 확실하지는 않습니다.매우 바쁜 테이블을위한 MySQL DB 엔진 (MyISAM 대 InnoDB)은 무엇입니까?

웹 사이트 특성 - 젊은 음악 제작자가 다른 사람들과 작업 (음악)을 공유 할 수있는 장소입니다. 내 생각에 음악을 업로드하고 다운로드 할 때 많은 쿼리가있을 것입니다. (27) 열 및 '파일' - - 22 열

다음

입니다 엔진이 모두 테이블에 InnoDB의 대 더 나은의 MyISAM 될 것입니다 내 질문에 '사용자' :

여기 내 DB에서 두 가지 테이블은?

MyISAM 잠금 전체 테이블 그래서 누군가가 파일을 업로드 할 때 MySQL이 파일 데이터를 쓰기 위해 테이블을 잠그고 누군가가이 요청이 다른 파일을 다운로드하도록 요청하면 Mysql이 테이블 잠금을 해제 할 때까지 기다려야하는지 잘 이해한다면?

답변

4

당신 자신이 말한 것처럼 MyISAM 테이블은 테이블 레벨 잠금을 사용합니다. 따라서 트래픽이 많으면 InnoDB가 올바른 선택이 될 것입니다. MyISAM을 사용하면 한 번에 한 명의 사용자 만 상호 작용할 수 있습니다. 하드웨어가 오버런을 피하기 위해 이러한 트래픽을 따라갈 수 있는지 확인해야합니다.

이렇게하면 로우 레벨 잠금을 지원하는 스토리지 엔진, 즉 InnoDB가 필요하다는 것을 알 수 있습니다.

+0

감사합니다. 추가 값이 있습니다. 데이터 유형이 tinyint (3) 인 열이 하나 있습니다.이 columnt 값을 200으로 업데이트했으며 놀랍게도이 값을 보여줍니다. 그래서 내 질문은 왜 디스플레이 폭이 작동 하는지를 정렬 한 후에 0 -3의 값만 필요로한다면 더 큰 것을 볼 수 있습니다. – DannyS

+0

감사합니다. tinyint (3) 대신 tinyint (1)를 사용하면 수백만 행의 경우에도 데이터베이스 크기에 차이가 있습니까? – DannyS

+1

명확하게 설명하겠습니다. tinyint (m)에서 m은 SELECT 문의 열 너비를 나타냅니다. 그러나 필드의 허용 된 범위를 제어하지는 않습니다. TinyINT (M)의 범위는 항상 -128 .. + 127입니다. M의 크기는 중요하지 않습니다. 그리고 예, tinyint (1)와 tinyint (3)는 데이터베이스 크기에 아무런 차이가 없습니다 :) –

관련 문제