2010-08-18 5 views
1

특정 위치 주변에 몇 가지 다른 스케일의 (세미) 실시간 피드를 저장할 응용 프로그램을 만듭니다. 각 눈금의 가중치는 눈금만큼 행이있는 테이블에 놓입니다. 규모 응용 프로그램은 PHP 웹 응용 프로그램이 3 초마다 읽는 매 초마다 새로운 가중치를 MySQL 데이터베이스에 제공합니다. 하드 드라이브를 많이 호출 할 트래픽이 많지 않거나 그 차이가 미미한 경우에는 더 이상 보이지 않지만 메모리/HEAP 테이블을 사용하는 것이 더 효율적인지 또는 메모리/HEAP 테이블을 사용하는 것이 더 합리적인지 궁금합니다. 정상적인 MyISAM 테이블.대규모 업데이트 된 MySQL 테이블을위한 최상의 테이블 엔진. MyISAM 또는 HEAP?

답변

1

많은 양의 데이터가 필요할 것으로 예상되는 경우 거의 MyISAM으로 가야합니다. 메모리 테이블에 모두 저장하면 메모리가 부족해질 수 있습니다. HEAP 엔진을 사용하면 전원 손실시 모든 데이터가 손실되지 않습니다 (유스 케이스에 따라 달라질 수 있습니다).

+0

InnoDB 대신 MyISAM이 필요한 이유는 무엇입니까? 나는 항상 InnoDB (행 수준 잠금, 트랜잭션 등)에 많은 이점이 있었기 때문에 MyISAM이 죽은 엔진이라고 생각했습니다. –

+1

MyISAM은 훨씬 빠릅니다. 그것은 큰 장점입니다. 믿거 나 말거나, 일부 사용 사례의 경우 행 수준 잠금은 실제로 테이블 수준 잠금보다 느릴 수 있습니다. 모든 애플리케이션에 트랜잭션이 필요하지는 않습니다. – ircmaxell

+0

ircmaxell -이 기사에 익숙합니까? 지금은 약간 날짜가 맞았지만 몇 가지 사실을 직접 설명해야합니다. http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon -benchmarks-part-1/ –

2

100에서 1000까지의 동시 읽기/요청을 작성 (일반적인 OLTP 사용법을 생각해 보라). innodb는 myisam을 수행 할 것이다.

그것은 다른 사람들의 관찰에 관한 것이 아니라 트랜잭션/산성 지원에 관한 것이 아니라 기존 myisam 엔진보다 훨씬 뛰어난 innodb 아키텍처에 관한 것입니다.

예를 들어, innodb는 클러스터 된 기본 키 인덱스 http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html을 지원합니다.

또한 innodb는 myisam 테이블 수준 잠금보다 동시로드에서 훨씬 더 성능이 좋은 행 수준 잠금을가집니다.

나는 계속 할 수 있지만 somone에 이미 InnoDB하지만 OLTP를위한 더 나은 선택 이유의 정말 좋은 요약 제공하는 것 : 나는이 질문이 일자지고 당신은 아마에 의해 아주 좋은 솔루션을했습니다 것을 알고 http://tag1consulting.com/MySQL_Engines_MyISAM_vs_InnoDB

0

을 하지만 지금은 관계형 데이터베이스가이 문제를 해결하는 최선의 방법이 아니라는 것을 읽을 수있는 사람을 지적하고자합니다. 나에게 이것은 플랫 파일 데이터베이스가 이상적인 솔루션 인 경우처럼 보입니다. 이 값을 이진 파일에 쓰고 단순한 수학 연산을 사용하여 행과 필드를 선택하면 오버 헤드를 크게 줄일 수 있습니다.