내 mongodb에 pymongo를 쓰고 있습니다. 가능한 빠른 성능을 원합니다. 그래서 쓰기 문제를 w = 0으로 설정했습니다. 위의 모든 시도에서pymongo 단일 삽입은 WriteConcern (w = 0)에도 불구하고 너무 느립니다.
1.
client = MongoClient(host=HOST, port=PORT, w=0)
collection = client[DB][COLLECTION]
collection.insert_one(data)
2.
client = MongoClient(host=HOST, port=PORT)
collection = collection.with_options(write_concern=WriteConcern(w=0))
collection = client[DB][COLLECTION]
collection.insert_one(data)
3.
client = MongoClient(host=HOST, port=PORT)
collection = client[DB][COLLECTION]
collection.insert_one(data, bypass_document_validation=True)
, 그것은 collection.insert_one 걸린 시간 (: 나는 세 가지 방법을 시도) ~ 0.5 초 (!)
W 아직도 오래 걸리는 삽입입니까?
나는 적어도 그 시간의 약 5 분의 일이어야한다고 생각한다. 따라서 '데이터'는 많은 데이터가 아니라 단지 몇 가지 항목입니다. mongodb 3.4 및 pymongo 3.0을 사용 중입니다.
감사합니다. 가장 걱정스러운 점은 insert_one()에 걸린 시간이 쓰기 관심사를 추가하기 전과 후에 매우 비슷하다는 점입니다. 올바른 영향을 미치지 않았을 수 있습니까? 벌크 삽입에 관해서는, db마다 응용 프로그램 실행마다 소량을 쓰고 싶기 때문에 문제가됩니다. –
@KerenMeron이 경우 응용 프로그램에서 데이터베이스에 액세스하는 왕복 시간은 복제 세트 노드 간의 지연 또는 저널에 쓰는 데 걸리는 시간보다 훨씬 큽니다. MongoDB는 분산 데이터베이스이므로 시간에 민감한 응용 프로그램의 경우 네트워크 상황을 고려해야합니다. WriteConcern을 사용하면 작업 속도가 빨라질 수 있지만 네트워크보다 빠를 수는 없습니다. –