2013-09-06 2 views
0

저는 항상 모든 프로젝트에 MyISAM을 사용 했습니다만, 다음에 시작하기 전에 노련한 의견을 구하고 있습니다.CakePHP 데이터베이스 - MyISAM, InnoDB, Postgresql

많은 테이블에서 수십만 개의 행을 처리 할 프로젝트를 시작하려고합니다. (여러 테이블은 연도가 진행됨에 따라 수백만 개의 행을 가질 수도 있습니다). 이 프로젝트는 웹 앱이기 때문에 주로 고속 읽기 액세스가 필요하지만 빠른 쓰기는 분명히 해를 끼치 지 않습니다. 그것은 매우 확장 성이 있어야합니다.

프로젝트는 민감하고 중요한 정보를 다루므로 신뢰할 수 있어야합니다. MySQL은 검증을 무시한 것으로 악명 높은 것으로 보인다.

프로젝트는 프레임 워크로 CakePHP를 사용할 예정이며, MySQL과 Postgresql을 똑같이 지원한다고 확신합니다. 그러나 누구든지 저와 동의하지 않을 경우 알려주십시오.

나는 InnoDB와 함께 가고 싶다는 생각이 들었지만 성능이 좋지 않다고 들었다. Postgresql은 가장 신뢰할 만하지만 MyISAM만큼 빠르지는 않습니다.

서버의 MySQL 버전을 5.5로 업그레이드 할 수 있다면 InnoDB는 Postgres보다 더 안전할까요? 아니면 MyISAM이 여전히 대부분의 요구에 더 잘 맞고 다른 것보다 더 확장 가능합니까?

+0

답변은 의견을 바탕으로하므로이 질문은 적합하지 않습니다. MyISAM은 어떤 경우에는 더 빠를 수 있지만, 외래 키 제약 조건과 트랜잭션의 부족은 꽤 제한적이라고 말할 수 있습니다. – jordanm

+0

나는 그것이 주관적 일 수 있다는 것을 깨달았지만 그 의견을 이끌어내는 사실들도있다. 외래 키 제약 조건은 무엇을 의미합니까? –

+0

http://en.wikipedia.org/wiki/Foreign_key – jordanm

답변

2

정말 필요한 유일한 대답은 "MyISAM이 아닙니다."입니다. 데이터에 관심이 없다면. 결국, /dev/null은 정말로 놀라운 성능을 가지고 있지만 신뢰도 요구 사항을 충족시키지 못합니다 ;-)

나머지는 누군가가 새로운 맛을 물을 때마다 닫히는 일반적인 MySQL 대 PostgreSQL의 의견입니다. 많은 도움이됩니다.

  • 당신이 일반적으로 레디 스 또는 Memcached가 같은 뭔가 조금 오래된 일을 감당할 수있는 데이터를 캐시 히트 마십시오

    은 무엇 당신의 DB 선택보다 훨씬 더 중요한 것은 당신이 그것을 사용하는 방법입니까?

  • "n + 1"이 비효율적 인 ORM을 선택하지 않도록주의하십시오.

  • 많은 데이터를 선택하지 않아도됩니까?

  • 선택 캐시 무효화 (이 경우 LISTENNOTIFY을 사용합니까?) 또는 무언가가 변경되면 전체 캐시를 플러시합니까?

  • 페이징을 최소화하고 페이지 매김을해야 할 때 마지막으로 본 ID를 기준으로 오프셋을 적용합니까? SELECT ... FROM ... WHERE id > ? ORDER BY id LIMIT 100SELECT ... FROM ... ORDER BY id OFFSET ? LIMIT 100보다 훨씬 빠릅니다.

  • 쿼리 성능을 모니터링하고 문제 쿼리를 수동으로 조정하거나 적절한 인덱스를 만드나요?

(이 질문을 닫았으며 CW가 아닌 한 투표를 닫고 답변하는 것이 적절하지 않기 때문에 표시 커뮤니티 위키.

+1

하하 감사합니다. MyISAM을 떠나고 나면 페이지가 영원히로드 될 것이라는 점은 여전히 ​​염려 스럽지만, 그것은 과거의 일보다 더 중요합니까? –

+0

@LukeSapan 글쎄, 확장 성이 높은 읽기가 많은로드의 경우 memcached, redis 등 캐싱 계층을 조사해야합니다. PostgreSQL에 트리거를 사용하여 작업자에게 NOTIFY 이벤트를 보내고 DB에 대해 캐시 항목을 무효화합니다 변화하지만, 귀하의 필요에 따라 모든 종류의 접근법이 있습니다. 나는 (Cake) PHP를 사용하지 않으므로 그 접근법이 얼마나 잘 들어 맞는지 모르겠다. –

+0

통찰력있는 답변에 감사드립니다. –

관련 문제