该问题是由于Apache AGE使用Postgres的访问方法来获取子节点的Oid列表,当树结构过于复杂时,Postgres无法处理大量的Oid,导致崩溃。
解决方法是使用游标(Cursor)来遍历子节点,因为游标能够在遍历同时对结果进行分页和缓存,从而避免了Postgres崩溃的问题。
以下是通过游标遍历子节点的Python代码示例:
cursor = conn.cursor()
query = "SELECT id FROM mytable WHERE parent_id = %s"
cursor.execute(query, (parent_id,))
while True:
rows = cursor.fetchmany(1000) #每次获取1000个子节点
if not rows:
break
for row in rows:
child_id = row[0]
#对子节点进行处理