[MONGODB] 얼마나 빨리 레디 스는 MongoDB를보다입니까?
MONGODB얼마나 빨리 레디 스는 MongoDB를보다입니까?
널리 레디 스는 "빠른 타오르는"하고 MongoDB를 너무 빨리 것을 언급 한 것. 그러나, 나는 문제가 두 가지의 결과를 비교 실제 번호를 찾는 데 문제가 있습니다. 을 감안할 때 유사한 구성, 기능 및 작업 등, (그리고 어쩌면 다른 구성 및 운영에 어떻게 요인의 변화를 보여주는), 레디 스 10 배 빨라진?, 2 배 더 빨리?, 5 배는 빠르다?
난 단지 성능을 말하는거야. 나는 MongoDB를 다른 도구와 풍부한 기능 세트를 가지고 있음을 이해합니다. 이 "더 나은 레디 스보다 MongoDB를"토론하지 않. 레디 스가 MongoDB를 무엇 마진 능가 않습니다에 의해 내가 부탁 해요?
이 시점에서, 심지어 싼 벤치 마크없이 벤치 마크보다는 더 낫다.
해결법
-
==============================
1.다음 벤치 마크에서 거친 결과 : 배 쓰기, 읽기 3 배.
다음 벤치 마크에서 거친 결과 : 배 쓰기, 읽기 3 배.
다음은 목적에 적응할 수 파이썬에서 간단한 벤치 마크입니다, 나는 각각 / 설정 값을 검색 간단하게 수행 할 것입니다 얼마나 잘보고 있었다 :
#!/usr/bin/env python2.7 import sys, time from pymongo import Connection import redis # connect to redis & mongodb redis = redis.Redis() mongo = Connection().test collection = mongo['test'] collection.ensure_index('key', unique=True) def mongo_set(data): for k, v in data.iteritems(): collection.insert({'key': k, 'value': v}) def mongo_get(data): for k in data.iterkeys(): val = collection.find_one({'key': k}, fields=('value',)).get('value') def redis_set(data): for k, v in data.iteritems(): redis.set(k, v) def redis_get(data): for k in data.iterkeys(): val = redis.get(k) def do_tests(num, tests): # setup dict with key/values to retrieve data = {'key' + str(i): 'val' + str(i)*100 for i in range(num)} # run tests for test in tests: start = time.time() test(data) elapsed = time.time() - start print "Completed %s: %d ops in %.2f seconds : %.1f ops/sec" % (test.__name__, num, elapsed, num / elapsed) if __name__ == '__main__': num = 1000 if len(sys.argv) == 1 else int(sys.argv[1]) tests = [mongo_set, mongo_get, redis_set, redis_get] # order of tests is significant here! do_tests(num, tests)
MongoDB를 1.8.1에 대한 결과 및 2.2.5 최신 pymongo / 레디 스-평을 레디 스 :
$ ./cache_benchmark.py 10000 Completed mongo_set: 10000 ops in 1.40 seconds : 7167.6 ops/sec Completed mongo_get: 10000 ops in 2.38 seconds : 4206.2 ops/sec Completed redis_set: 10000 ops in 0.78 seconds : 12752.6 ops/sec Completed redis_get: 10000 ops in 0.89 seconds : 11277.0 ops/sec
물론 에누리 결과를 가져! 당신이 다른 클라이언트 / 다른 구현을 사용하여, 다른 언어로 프로그래밍하는 경우 등 결과가 wildy 다를 수 있습니다. 완전히 다른 것입니다 귀하의 사용을 언급합니다! 가장 좋은 방법은 당신이 그들을 사용하고자하는 정확한 방법으로, 벤치 마크 그들에게 자신에게 있습니다. 추론으로 당신은 아마 각을 활용하는 가장 좋은 방법을 알아낼 수 있습니다. 자신을 위해 항상 벤치 마크!
-
==============================
2.레디 스 및 MongoDB를 삽입 성능 분석에 대한이 게시물을 확인하시기 바랍니다 :
레디 스 및 MongoDB를 삽입 성능 분석에 대한이 게시물을 확인하시기 바랍니다 :
-
==============================
3.좋은 간단한 벤치 마크
좋은 간단한 벤치 마크
다시 현재 레디 스 버전 (2.6.16)과 몽고 (2.4.8)를 사용하여 결과를 다시 계산하기 위해 노력하고 여기 결과입니다
Completed mongo_set: 100000 ops in 5.23 seconds : 19134.6 ops/sec Completed mongo_get: 100000 ops in 36.98 seconds : 2703.9 ops/sec Completed redis_set: 100000 ops in 6.50 seconds : 15389.4 ops/sec Completed redis_get: 100000 ops in 5.59 seconds : 17896.3 ops/sec
또한이 블로그 게시물은 둘 다하지만 사용 node.js.을 비교 그것은 시간과 함께 데이터베이스에있는 항목의 수를 증가시키는 효과를 보여줍니다.
-
==============================
4.두 사람은 꽤 같은 공간에있는 것처럼 숫자는 찾기 힘들 것입니다. 일반적인 응답은 그 레디 스 10-30% 빠르게 데이터가 단일 시스템의 작업 메모리에 들어가고 설정할 때. 데이터의 양을 초과하면, 레디 스 실패. 몽고는 부하의 종류에 따라 금액에 속도가 느려집니다. 삽입은 부하의 종류를 들어 한 사용자가 최근 크기의 6 ~ 7 주문 (10,000 100,000 회)하지만 보고서는 또한 구성 문제가 있다고, 이것은 아주 전형적인 작업 부하는 것을 인정의 둔화를보고했다. 일부 데이터가 디스크에서 읽을해야 할 경우 보통 10 배에 대한 일화 느린하여 무거운 하중을 읽습니다.
두 사람은 꽤 같은 공간에있는 것처럼 숫자는 찾기 힘들 것입니다. 일반적인 응답은 그 레디 스 10-30% 빠르게 데이터가 단일 시스템의 작업 메모리에 들어가고 설정할 때. 데이터의 양을 초과하면, 레디 스 실패. 몽고는 부하의 종류에 따라 금액에 속도가 느려집니다. 삽입은 부하의 종류를 들어 한 사용자가 최근 크기의 6 ~ 7 주문 (10,000 100,000 회)하지만 보고서는 또한 구성 문제가 있다고, 이것은 아주 전형적인 작업 부하는 것을 인정의 둔화를보고했다. 일부 데이터가 디스크에서 읽을해야 할 경우 보통 10 배에 대한 일화 느린하여 무거운 하중을 읽습니다.
결론 : 레디 스가 훨씬 더 빠르게이 아닌 것입니다.
-
==============================
5.여기에 1 세에 대한 토네이도 프레임 워크 세션 성능에 대한 훌륭한 기사입니다. 이 레디 스 및 MongoDB를 포함하는 몇 가지의 상이한 구현 사이의 비교를 갖는다. 기사의 그래프는 레디 스이 특정 사용 예제에 약 10 %로 MongoDB를 뒤에 상태.
여기에 1 세에 대한 토네이도 프레임 워크 세션 성능에 대한 훌륭한 기사입니다. 이 레디 스 및 MongoDB를 포함하는 몇 가지의 상이한 구현 사이의 비교를 갖는다. 기사의 그래프는 레디 스이 특정 사용 예제에 약 10 %로 MongoDB를 뒤에 상태.
레디 스는 당신이있는 기계의 성능을 분석 벤치 마크에 내장되어 있습니다. 레디 스에 대한 벤치 마크 위키에서 그것에서 원시 데이터의 톤이있다. 하지만 당신은 몽고에 대한 조금 주위를 둘러해야 할 수도 있습니다. 여기처럼 여기, 그리고 어떤 임의의 폴란드어 번호는 (그러나 그것은 당신에게 몇 가지 MongoDB를 자신을 벤치 마크 실행하기위한 시작점을 제공합니다).
나는이 문제에 대한 최선의 해결책은 당신이 기대하는 상황의 유형에 테스트를 직접 수행하는 것입니다 생각합니다.
-
==============================
6.내 경우에는, 무슨 일이 성능 비교에서 결정하는 요인이되어 있으며, 사용되는 MongoDB를 WriteConcern입니다. 대부분의 몽고 드라이버는 요즘 그 관해서는, 대부분의 쓰기 작업을위한 레디 스 매우 비교했다 인정하는 수단 'RAM에 기록'(Mongo2.6.3-WriteConcern)에 기본 WriteConcern을 설정합니다.
내 경우에는, 무슨 일이 성능 비교에서 결정하는 요인이되어 있으며, 사용되는 MongoDB를 WriteConcern입니다. 대부분의 몽고 드라이버는 요즘 그 관해서는, 대부분의 쓰기 작업을위한 레디 스 매우 비교했다 인정하는 수단 'RAM에 기록'(Mongo2.6.3-WriteConcern)에 기본 WriteConcern을 설정합니다.
그러나 현실은 응용 프로그램의 요구와 생산 환경 설정에 따라, 당신은 WriteConcern.JOURNALED이 관심을 변경할 수 있습니다 (oplog에 기록) 또는 WriteConcern.FSYNCED는 (디스크에 기록) 또는 복제 세트 (백 업)에 기록 경우에 필요하다.
그럼 당신은 몇 가지 성능 감소를보고 시작할 수 있습니다. 다른 중요한 요인은, 데이터 액세스 패턴이 최적화 된 인덱스 미스 % (mongostat 참조) 일반적으로 인덱스 방법 등이 있습니다.
-
==============================
7.당신은 또한 하드웨어에 의존하는 경우 당신이 그것을 실행 이후 표시 기준의 2 ~ 3 배는 오해의 소지가 있다고 생각 - 내 경험에서의 '강한'기계이며, (레디 스 찬성) 격차 더 큰 될거야, 아마 벤치 마크가 메모리 경계가 꽤 빨리 제한에 도달한다는 사실에 의해.
당신은 또한 하드웨어에 의존하는 경우 당신이 그것을 실행 이후 표시 기준의 2 ~ 3 배는 오해의 소지가 있다고 생각 - 내 경험에서의 '강한'기계이며, (레디 스 찬성) 격차 더 큰 될거야, 아마 벤치 마크가 메모리 경계가 꽤 빨리 제한에 도달한다는 사실에 의해.
메모리 용량에 관해서는 - 그 주위를 이동하는 방법도 있기 때문에 이것은 부분적으로 사실이다, 쓰기 디스크에 레디 스 데이터를 백업하는 것이 (상업) 제품, 메모리 크기를 극복 또한 클러스터 (멀티 - 분산됩니다) 솔루션이있다 한정.
from https://stackoverflow.com/questions/5252577/how-much-faster-is-redis-than-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB의 : initAndListen에서 예외 : 20 읽기 전용 디렉토리에 대한 잠금 파일을 만들 시도 : / 데이터 / dB, 종료 (0) | 2019.12.27 |
---|---|
[MONGODB] MongoDB를 errno를 연결할 수 없습니다 : (61) 연결이 거부 됨 (0) | 2019.12.27 |
[MONGODB] 기본값으로 MongoDB의 쉘에 예쁜 인쇄 (0) | 2019.12.27 |
[MONGODB] elasticsearch v.s. MongoDB의 애플리케이션들을 필터링 [폐쇄] (0) | 2019.12.27 |
[MONGODB] MongoDB의 반대를 통해 CouchDB를를 사용하는 경우 (0) | 2019.12.27 |