我们正在使用neo4j
和py2neo
来执行密码查询,以对neo4j
进行任何更新或读取操作。
最近,我们开始面临一个问题,即所有密码查询都不会执行,因此尝试使用CALL dbms.listTransactions()
在neo4j中查找所有事务,并找出原因是该事务已获得大量锁并且与任何查询都没有关联,而且此交易从几个小时开始运行。
在代码部分中,我始终确保即使在密码查询或任何其他代码部分中发生异常时,事务也不会保持打开状态,因为我正在回滚事务,以便可以释放获得的锁。 / p>
下面是交易清单查询的屏幕截图:-
可以看出,query-2
被上述事务阻止。
现在,我知道我可以使用neo.conf
来限制交易时间,但是我并不喜欢这样做,因为有时它也可能错误地终止交易,而且找出并解决该问题非常重要没有查询的交易即将进行,如何处理。
仅当我们重新启动neo4j服务器时,该事务才会消失,并且在一段时间后再次出现。
下面是neo4j事务创建,提交和回滚的非常粗糙的代码段。
graph_obj = Graph(host=neo4j_auth_obj["host"], port=neo4j_auth_obj["port"],
user=neo4j_auth_obj["user_name"], password=neo4j_auth_obj["password"])
neo_transaction = graph_obj.begin()
try:
cypher_query = "a valid cypher query"
neo_transaction.run(cypher_query)
neo_transaction.commit()
except Exception:
neo_transaction.rollback()
这笔空白交易有什么用?