각각 약 200 바이트의 약 300 억 레코드의 거대한 테이블이있는 데이터베이스에서 Mongo DB를 테스트 할 예정입니다. Sharding이 그런 종류의 볼륨에 필요하다는 것을 이해합니다. 따라서 한 대의 컴퓨터에서 1 ~ 20 억 개의 레코드를 얻으려고합니다. 필자는 각각 2 개의 CPU/6 코어와 64GB의 RAM이있는 시스템에서 10 억 개의 레코드를 생성했습니다. 색인없이 mongoimport-ed, 속도는 괜찮 았습니다 (평균 14k 레코드/s). 색인을 추가하는 데 오랜 시간이 걸렸지 만 일회성이므로 괜찮습니다. 이제 데이터베이스에 새 레코드를 삽입하는 데 오랜 시간이 걸립니다. 내가 알 수있는 한, 레코드를 삽입하는 동안 (CPU, RAM 및 I/O가 양호한 상태) 기계가로드되지 않습니다. 새 레코드를 빠르게 삽입하는 것이 어떻게 가능합니까?MongoDB 삽입 성능 - 두 개의 인덱스가있는 거대한 테이블
3
A
답변
4
이 호스트를 MMS (http://mms.10gen.com/help/overview.html#installation)에 추가하는 것이 좋습니다. munin-node 지원과 함께 설치하면 가장 많은 정보를 얻을 수 있습니다. 이렇게하면 속도를 늦추는 원인을 추적 할 수 있습니다. 죄송합니다. 더 구체적으로 대답 할 수는 없지만 여기에는 가능한 많은 설명이 있습니다. 일부 일반 포인트 :
- 추가 인덱스는 인덱스뿐만 아니라 작업 데이터 세트가 이제 RAM에있을 것, 이것이 당신의 자원 (페이지 오류 확인) 이제 인덱스를 가지고
- 긴장했을 수 있음을 의미 , 삽입 할 때 업데이트해야합니다. 모든 것이 RAM에 들어 맞으면 OK입니다. 첫 번째 지점을 참조하십시오.
- 디스크 IO를 점검하여 성능이 어떻게되는지 확인하십시오.
- 올바른 파일 시스템 (XFS, ext4)과 커널 버전 2.6.25 이상을 실행하고 있습니까? (이전 버전 fallocate에 문제가())
후속 조치에 대한 몇 가지 좋은 일반 정보는 여기에서 찾을 수 있습니다 :
관련 문제
- 1. 인덱스가있는 Android SQLite 성능
- 2. 두 개의 인덱스가있는 테이블에서 OR이있는 SELECT
- 3. SQL 삽입 두 개의 테이블 질문
- 4. 클러스터 된 인덱스가있는 테이블에 삽입
- 5. 두 개의 가능한 인덱스가있는 집합에 요소 저장
- 6. 두 개의 인덱스가있는 정렬 된 큐
- 7. mongodb 나쁜 성능
- 8. 거대한 성능 딥
- 9. sqlite의 last_insert_rowid - 두 개의 테이블
- 10. 대용량 삽입 성능 최적화 ...?
- 11. 나는 두 개의 테이블이 두 테이블
- 12. 두 개의 거의 동일한 테이블 간의 성능 불일치
- 13. 어떻게 두 개의 테이블
- 14. SQL - 두 개의 테이블
- 15. MySQL은 두 개의 테이블
- 16. MySQL은 두 개의 테이블
- 17. MongoDB - 인덱스가있는 중첩 된 필드에 대한 쿼리
- 18. MySQL의 도움말 : 두 개의 테이블
- 19. 장고에 거대한 테이블?
- 20. 조건이있는 두 개의 테이블에 삽입
- 21. 50/50 삽입 및 선택. 두 개의 테이블 또는 하나 개의 테이블
- 22. 거대한 테이블을 읽는 성능 조정
- 23. 많은 인덱스가있는 테이블에 대해 느린 대량 삽입
- 24. 가입 거대한 테이블
- 25. 하나의 테이블 SQL Server에서 두 개의 트리거
- 26. 동일한 열에 PK 및 UQ 인덱스가있는 경우 SQL Server의 성능
- 27. mongodb java가 두 개의 컬렉션을 결합합니다.
- 28. 거대한 텍스트 필드로 테이블 최적화
- 29. MongoDB 삽입 문 작성
- 30. 거대한 PostgreSQL 테이블의 성능 문제
당신이 삽입 속도가 지금의 우리에게 이야기 할 수 있습니까? 삽입 당 평균 밀리 세컨드 일 수도 있습니다. –
테이블에 10 억 개의 레코드와 정의 된 2 개의 인덱스가있는 삽입 속도는 초당 약 200 레코드입니다. –
2 색인은 어떤 종류의 색인입니까? _id 또는 희박하거나 고유하거나 정상입니까? – jianpx