并行调用api(4 次),在事务中执行批量大小为 10K 的文档的新插入时,经常出现WriteConflict 错误。但如果插入批量大小设置为 2K,则运行良好。不确定我需要调整哪个参数,以便插入工作对于 10k 批量大小没有问题
MongoDB服务器版本:4.4.0
不确定这是否与此有关https://jira.mongodb.org/browse/SERVER-53464
这是当 mongo loglevel 设置为 1 时的 mongo 日志
{"t":{"$date":"2021-01-23T17:23:40.838+00:00"},"s":"I", "c":"COMMAND", "id":51803, "ctx":"conn42","msg":"Slow query","attr":{"type":"command","ns":"mydb.mycollection","command":{"insert":"mycollection","ordered":false,"$db":"mydb","lsid":{"id":{"$uuid":"a0beb5f8-ed4c-4b64-8971-719178b3a598"}},"$clusterTime":{"clusterTime":{"$timestamp":{"t":1611422612,"i":10000}},"signature":{"hash":{"$binary":{"base64":"H3DsiEiy4CMrRNvWqbIJQMbHl0c=","subType":"0"}},"keyId":6870929147875557381}},"txnNumber":4,"startTransaction":true,"autocommit":false},"ninserted":10000,"keysInserted":30000,"numYields":0,"reslen":230,"locks":{},"storage":{"data":{"bytesRead":1661221,"timeReadingMicros":3201739}},"protocol":"op_msg","durationMillis":3741}}
{"t":{"$date":"2021-01-23T17:23:40.838+00:00"},"s":"D1", "c":"QUERY", "id":22790, "ctx":"conn42","msg":"Received interrupt request for unknown op","attr":{"opId":28178}}
{"t":{"$date":"2021-01-23T17:23:40.909+00:00"},"s":"I", "c":"TXN", "id":51802, "ctx":"conn42","msg":"transaction","attr":{"parameters":{"lsid":{"id":{"$uuid":"a0beb5f8-ed4c-4b64-8971-719178b3a598"},"uid":{"$binary":{"base64":"Zx/+1Rn/RW/eLwwG9xqjQAzGuq4fRkYljdz5CIhAbaw=","subType":"0"}}},"txnNumber":4,"autocommit":false,"readConcern":{"provenance":"implicitDefault"}},"readTimestamp":"Timestamp(0, 0)","ninserted":10000,"keysInserted":30000,"terminationCause":"aborted","timeActiveMicros":3810904,"timeInactiveMicros":2702,"numYields":0,"locks":{"ReplicationStateTransition":{"acquireCount":{"w":2}},"Global":{"acquireCount":{"w":1}},"Database":{"acquireCount":{"w":1}},"Collection":{"acquireCount":{"w":1}},"Mutex":{"acquireCount":{"r":46}}},"storage":{"data":{"bytesRead":1661221,"timeReadingMicros":3201739}},"wasPrepared":false,"durationMillis":3813}}
{"t":{"$date":"2021-01-23T17:23:40.910+00:00"},"s":"D1", "c":"STORAGE", "id":22411, "ctx":"conn42","msg":"Slow WT transaction. Lifetime of SnapshotId {getSnapshotId_toNumber} was {transactionTime}ms","attr":{"getSnapshotId_toNumber":78620,"transactionTime":3813}}
{"t":{"$date":"2021-01-23T17:23:40.933+00:00"},"s":"D1", "c":"COMMAND", "id":21962, "ctx":"conn42","msg":"Assertion while executing command","attr":{"command":"commitTransaction","db":"admin","commandArgs":{"commitTransaction":1,"$db":"admin","lsid":{"id":{"$uuid":"a0beb5f8-ed4c-4b64-8971-719178b3a598"}},"$clusterTime":{"clusterTime":{"$timestamp":{"t":1611422620,"i":10000}},"signature":{"hash":{"$binary":{"base64":"+r9TOIIR/J8dXRvrPyF0urUeWJA=","subType":"0"}},"keyId":6870929147875557381}},"txnNumber":4,"autocommit":false},"error":"WriteConflict: WriteConflict error: this operation conflicted with another operation. Please retry your operation or multi-document transaction."}}
{"t":{"$date":"2021-01-23T17:23:40.933+00:00"},"s":"I", "c":"COMMAND", "id":51803, "ctx":"conn42","msg":"Slow query","attr":{"type":"command","ns":"admin.$cmd","command":{"commitTransaction":1,"$db":"admin","lsid":{"id":{"$uuid":"a0beb5f8-ed4c-4b64-8971-719178b3a598"}},"$clusterTime":{"clusterTime":{"$timestamp":{"t":1611422620,"i":10000}},"signature":{"hash":{"$binary":{"base64":"+r9TOIIR/J8dXRvrPyF0urUeWJA=","subType":"0"}},"keyId":6870929147875557381}},"txnNumber":4,"autocommit":false},"numYields":0,"ok":0,"errMsg":"WriteConflict error: this operation conflicted with another operation. Please retry your operation or multi-document transaction.","errName":"WriteConflict","errCode":112,"reslen":394,"locks":{"ReplicationStateTransition":{"acquireCount":{"w":3}},"Global":{"acquireCount":{"r":1,"w":1}},"Database":{"acquireCount":{"w":1}},"Collection":{"acquireCount":{"w":1}},"Mutex":{"acquireCount":{"r":46}}},"flowControl":{"acquireCount":1,"timeAcquiringMicros":1},"storage":{},"protocol":"op_msg","durationMillis":93}}
{"t":{"$date":"2021-01-23T17:23:40.933+00:00"},"s":"D1", "c":"QUERY", "id":22790, "ctx":"conn42","msg":"Received interrupt request for unknown op","attr":{"opId":28235}}
Run Code Online (Sandbox Code Playgroud)
来自 mongodb 事务文档:
事务中的操作数量:事务中可以读取的文档数量没有硬性限制。作为最佳实践,一次事务中修改的文档不应超过 1,000 个。
对于需要修改超过 1000 个文档的操作,开发人员应将事务分解为单独的部分,以批量处理文档。
| 归档时间: |
|
| 查看次数: |
15110 次 |
| 最近记录: |