Java mongodb慢速查询在mongoshell上运行得如此之快
为什么从JAVA应用程序调用此查询时运行得如此缓慢 我在mongodb日志上有一个缓慢的查询日志。对mongodb的请求是通过JAVA应用程序发出的,该应用程序与mongodb实例运行在同一台机器上Java mongodb慢速查询在mongoshell上运行得如此之快,java,mongodb,aggregation-framework,Java,Mongodb,Aggregation Framework,为什么从JAVA应用程序调用此查询时运行得如此缓慢 我在mongodb日志上有一个缓慢的查询日志。对mongodb的请求是通过JAVA应用程序发出的,该应用程序与mongodb实例运行在同一台机器上 I COMMAND [conn27952] command db_iyspanel.persons command: aggregate { XXX} , cursor: {}, collation: { locale: "tr", numericOrdering: tru
I COMMAND [conn27952] command db_iyspanel.persons command: aggregate { XXX} ,
cursor: {},
collation: { locale: "tr", numericOrdering: true, normalization: false },
$db: "db_xxx" }
planSummary: COLLSCAN
keysExamined:0
docsExamined:445095
hasSortStage:1
cursorExhausted:1
numYields:136443
nreturned:1
reslen:14413
locks:{ Global: { acquireCount: { r: 273052 } },
Database: { acquireCount: { r: 136526 } }, Collection: { acquireCount: { r: 136525 } } }
protocol:op_msg 62835ms
我已经隐藏了聚合的细节,因为这不是我要问的。
从我所看到的,这个查询进行了一次收集扫描,大约在63秒内运行
但当我复制并粘贴此聚合并在mongoshell上运行时,它会立即运行
我在mongoshell上使用.toArray()
,确保所有结果都被读取。返回的数据只有10-15个文档,一点也不大
即使在通过JAVA驱动程序运行相同的查询几秒钟后,查询仍然是一样的慢
因此,mongoshell上的速度总是很快,而JAVA驱动程序上的速度总是很慢。JAVA应用程序、mongoshell和mongo实例都在同一台机器上。我不知道发生了什么事