如何通过Python获取Neo4j所有会话中运行超2分钟的活跃查询?
解决Neo4j
dbms.listQueries()仅返回当前会话查询的问题 问题原因
调用CALL dbms.listQueries()只能获取当前会话的查询,核心原因是普通权限用户仅能查看自身会话的查询数据,无法访问其他会话的运行状态,所以你另一个脚本的无限循环查询不会被返回。
解决方案
授予全局监控权限:给执行查询的用户分配
DBMS_MONITOR角色(只读监控权限,比全权限的DBMS_ADMIN更安全),执行授权语句:GRANT ROLE DBMS_MONITOR TO [你的用户名];授权完成后,重新执行原代码即可捕获所有会话的活跃查询。
直接筛选长时长查询:在Cypher语句中直接过滤运行时长超过2分钟的查询,无需后续代码二次处理,效率更高:
CALL dbms.listQueries() WHERE elapsedTimeMillis > 120000 // 2分钟=120000毫秒 YIELD queryId, query, elapsedTimeMillis, username, sessionId RETURN queryId, query, elapsedTimeMillis, username, sessionId
内容的提问来源于stack exchange,提问作者Syed Muhammad Ibrahim
相关产品推荐
相关产品推荐

