2012-02-17 1 views
1

테이블 구조를 레이아웃하고 스토리지 엔진을 설정하는 방법에 대해 잘 알고 싶습니다.이 설정을위한 innodb와 myisam의 가장 좋은 조합은 무엇입니까?

테이블의 첫 번째 필드는 AUTO INCREMENT 인 정수 유형입니다. 필드 2 ~ 5는 약 95 % 읽기, 5 % 쓰기입니다 (쓰기는 INSERT입니다.) 그러나 필드 6은 지속적으로 업데이트되며 약 50 %는 (SELECT 문)을 읽고 50 %는 씁니다 (10 % INSERT90 % UPDATE).)

난 그냥 테이블 http://dev.mysql.com/doc/refman/5.0/en/internal-locking.html로부터 제거 된 항목이없는 경우 자유롭게 잠금없이 MyISAM 테이블에 대한 동시 INSERT 및 SELECT 문을 혼합 할 수 읽어 보시기 바랍니다. 내가 테이블에서 행을 제거하는 계획은 없습니다.

테이블을 두 개의 다른 테이블로 나눌 것을 권장합니다. 첫 번째 테이블은 MYISAM으로 위에서부터 필드 1에서 5 (95 % 읽기, 5 % 쓰기)입니다. 두 번째 테이블은 innodb이고 두 개의 필드가 있습니다. 첫 번째 테이블은 첫 번째 테이블의 첫 번째 필드와 동일한 AUTO INCREMENT이고 두 번째 필드는 지속적으로 업데이트되는 필드입니다 (50 % 쓰기 50 % 읽기).

서로 다른 테이블에 삽입 된 두 문은 차례대로 발생한다고 가정합니다. 드문 경우지만 첫 번째 INSERT 문은 통과하지만 두 번째 INSERT 문은 통과하지 않습니다. 각 테이블의 첫 번째 필드가 올바르게 서로 매핑되도록하려면 어떻게해야합니까?

+1

가 명확히의 MyISAM, 표 (의 MyISAM) 및 표 2 대 이노을 명확히 것을 만들어 다른 게시물입니다 (innodb)는 "지속적으로 업데이트되는"칼럼을 공유 할 것인가? –

+0

Hey Mike, 그들이 공유 할 유일한 열은 자동 증가 열입니다. 테이블 1과 테이블 2의 20 행은 서로 관계가 있어야합니다. – user784637

+1

좋습니다, 그래서 table1.ever_changing_col! = table2.ever_changing_col. 내가 물어 보는 이유는, 열이 동일하지 않은 경우에도 linking_id를 공유하지만 tabl2.ever_changing_col이 table1을 보완한다는 것입니다. –

답변

2

MyISAM 테이블에 복수 VARCHAR 필드가있는 경우 you may want to convert the table's row format to FIXED. 이것은 MyISAM 테이블과 그 인덱스 파일을 80 %에서 100 % 확대시킬 수 있지만, 다른 것을 바꾸지 않고 쿼리 퍼포먼스를 20 % -30 % 증가시킬 것이다.

테이블이 상호 배타적 인 방식 (JOIN 없음)으로 사용되는 한 확인해야합니다. 왜 InnoDB와 MyISAM 사이에 JOIN이 없습니까? JOIN을 수행하는 모든 쿼리에는 InnoDB와 MyISAM이 섞여있을 수 없으며, 그렇지 않으면 모든 SELECT 쿼리가 MyISAM과 InnoDB 테이블 모두에서 전체 테이블 잠금으로 악화된다.. 여기

내가 완전히

+1

+1. 나는 롤란도의 여러 게시물을 읽었으며 그의 경기를보고있다. –

관련 문제