2012-07-04 2 views
0

대부분의 RDBMS 패키지는 쿼리의 99 %가 선택 쿼리라는 것을 염두에두고 만들어졌습니다. 그러나 나는 적어도 50 %의 쿼리를 생성/업데이트 쿼리로 사용하는 상황에 처해있다. 또한 끈기가 필요하기 때문에 NoSQL 솔루션을 사용할 수 없습니다. 기본적으로 업데이트가있을 때마다 즉시 영구 저장해야합니다. 그래서, MySQL로 인해 성능이 저해 될지 궁금합니다. 현재 MySQL 엔진은 InnoDb입니다. 다른 MySQL 엔진이 더 좋습니까? 필자는 Amazon RDS를 사용하여 MySQL을 중점적으로 다룰 계획입니다. 하지만 호기심에서 postgresql이 도움이되는지 알고 싶습니다.만들기/업데이트를위한 mysql/postgresql 최적화

N.B. - 규모에 대한 아이디어를 얻으려면 제작에 들어간 지 2 개월 이내에 최소 백만 개의 항목이있는 테이블에 대한 쿼리 작성/업데이트에 대해 이야기하고 있습니다.

+0

가능한 한 테이블을 분할하고 많이 성장하지 못하게하십시오. 테이블을 처음부터 확장하십시오. – Pentium10

답변

1

작업 세트가 메모리에 들어 맞으면 삽입 및 업데이트가 매우 빠른 경향이 있습니다. 파티셔닝은 다른 사람들이 언급 한 것처럼 여기서 도움이 될 수 있습니다. 대부분의 NoSQL 솔루션은 지속성을 갖기 때문에 철저히 제외하면 안됩니다. 카산드라는 쓰기를 위해 특별히 조정 된 저장소 모델을 가지고 있으며 한 번해볼 가치가 있습니다.

당신이 MySQL과 가면, 거기에 삽입 성능에 대한 몇 가지 내구성을 거래하는 매개 변수를 조정하고, 다양한 하드웨어 및 소프트웨어 설정 : 당신은 아마 전체 사용하여 약 100 삽입/초를 기대할 수

https://serverfault.com/questions/118504/how-to-improve-mysql-insert-and-update-performance

표준 디스크의 내구성. 그것이 절삭하지 않는다면, 벤치 마크를 설정하고 매개 변수를 조정하거나 재 설계하기위한 준비를하십시오. 벤치 마크 테스트는 테이블에서 실제 양의 데이터를 사용하는 것이 중요합니다. 테이블이 채워지기 시작하면 6 개월 만에 발견하는 것보다 문제를 발견하는 것이 훨씬 낫습니다. 합성 데이터는 괜찮습니다. 인덱스 필드가 유사하게 배포되었는지 확인하십시오.

1

인덱스를 삽입/업데이트 할 때 모든 인덱스를 업데이트해야하기 때문에 가능한 적은 인덱스를 사용하면 삽입 및 업데이트 속도가 빨라집니다. 물론 일부 인덱스는 업데이트를 증가시킬 수 있습니다.

+2

UPDATE의 경우 모든 인덱스를 업데이트해야하는 것은 아닙니다. 변경된 열을 포함하는 항목 만 (적어도 Postgres 용). 그리고 색인은 UPDATE도 가속화 할 수 있습니다 (WHERE 조건으로 색인을 사용할 수있는 경우). –

+0

예, 색인에 의한 UPDATES의 속도 향상은 제 두 번째 문장에서의 것입니다. 약간 오해했습니다. – Ascendor