2011-09-21 5 views
1

지난 몇일 동안 나는 MyIsam과 Innodb 중 어느 것을 사용할지 결정하는 데 큰 혼란을 겪었습니다. 둘 다 자신의 장단점이 있습니다. 내 테이블에 많은 양의 INSERT, UPDATE 및 SELECT 연산이있는 데이터가 있습니다.MyIsam & Innodb를 모두 사용

동일한 구조의 두 테이블을 만들기로 결정했습니다. tbl_mytbl_innodb(innodb engine) 그리고 tbl_mytbl_myisam(myisam engine) 나는 tbl_mytbl_myisam을 삽입/업데이트 할 INSERT 및 UPDATE 이벤트에 대해 tbl_mytbl_innodb에 두 개의 트리거를 생성했습니다. 따라서 항상 tbl_mytbl_innodb에 쓰고 tbl_mytbl_myisam에서 읽습니다.

이 과정이 정확합니까? 아니면 더 좋은 방법이 필요합니까?

답변

2

올바른 프로세스와 반대라고 할 수 있습니다. 내 개인적인 추천은 트랜잭션을 지원하기 때문에 거의 모든 비즈니스 활동에 InnoDB를 사용하는 것입니다 ... MyISAM에서 찾은 유일한 용도는 전체 텍스트 검색 (InnoDB에서 사용할 수없는 이유는 무엇인지 모르겠지만)입니다.하지만 개인의 선호도는 자유롭게 인정합니다.

트리거를 사용하여 여러 테이블에서 동일한 데이터를 동기화하는 것은 좋지 않습니다. 비즈니스 요구 사항을 정의하고 엔진을 선택하십시오. 특정 요구 사항에 대해 다른 엔진을 사용해야하는 경우이를 정의하고 필요에 따라 데이터의 하위 집합을 채 웁니다.

+2

가까운 곳의 InnoDB에 전체 텍스트 검색이 있습니다! http://blogs.innodb.com/wp/2011/07/innodb-full-text-search-tutorial/ –

+0

@ 마이클 : 와아! 그것은 조금 추운 아래층에 도착했고, FAA가 돼지에 조종사 면허를주는 것을 시작 했느냐? –

+0

그래서 나는 수두가 innodb에 집착한다고 생각한다. 그러나 나는 검색이 myisam에서 빠르다고 읽었습니다. 그게 얼마나 사실입니까? – iThink

4

그건 바보 같은 방법입니다. 트랜잭션과 외래 키 전체 텍스트 인덱스가 필요한 경우 두 가지를 동시에 사용해야하는 유일한 경우입니다. 트리거를 사용하여 MyISAM 테이블의 전체 텍스트 필드를 동기화하고, 그렇지 않으면 InnoDB에 모든 것을 보관합니다.

InnoDB보다 MyISAM이 더 선호되는 경우가 많으며, InnoDB에서 전체 텍스트 지원이 부족한 경우가 많습니다.

+0

하아, 내 대답은 거의 똑같은 것이 었습니다. –

관련 문제