I am using 5.1.0 with a single node(docker), running on 16 vCPUs, 64GB RAM. I have a query which retrieves upto 5 degrees of connections for a given node. The result has 72K records and the query latency is about 78 seconds. My configurations to the docker container are as below. The call dbms.listConfig() does list the same values, so that is consistent.
I have attached the query profile output. I noticed that the PageCache is not used at all. I expect that the ProduceResult operator at least must use the Cache rather than going for 100s of thousands of dbhits... Looks like this is where the performance is lost. Would you kindly help with any recommendations on how to get the engine to use PageCache? Much appreciate it.
Hi @spraja08 ,
Does your graph contain any cycles? How long does the query takes when you run solely the count of paths? Was this behavior different on previous Neo4J versions? What are you planning to do with this paths? Considering the relationships had no type.
Thanks bennu. The relationships has a property called "type". The graph has cycles but in the cyclic path, the relationship property "type" has different values. So these cycles are valid.
If I solely count the paths, the query is very efficient. This goes to prove that the last operator (produceResults) creates a lot of dbhits, which contributes to the high latency. I wonder if this operator is not written to leverage the pagecache ?!
The paths is the key insight that the consumers will utilise in business scenarios.