Sure use GRAPH.EXPLAIN and GRAPH.PROFILE to inspect the execution-plan used to run the query and the amount of data processed, make sure indices are utilized.
I believe that our requests are being queued.
Is RedisGraph limited by the single-threaded access nature of Redis?
If so, is there a way for us to make a read-only replica that is not limited by single-threaded data access?
If not, it sounds like we should make some replicas.
Can RedisGraph execute multiple queries on multiple processors?
It is clear to me that RedisGraph can serve multiple requests at once, but reading over the white paper again suggests that RedisGraph might only be able to run on 1 processor. (i.e. can RedisGraph execute 4 queries, each on 1 processor, thus utilizing 4 cores)
Or to be able to process multiple requests using multiple processors, I should use a cluster? (Then we can get 1 core for each replica)
RedisGraph can execute queries on multiple processors simultaneously. The threadpool mentioned by above is by default sized to the system’s core count, and queries will be dispatched to different processors
using whatever strategem POSIX threads utilize.
However, this is only true for read queries at this time. Only one write query may be running at any given time.
If I have a complex query, will there be parts of it that run on the redis main thread? I understand that matrix multiplication can happen on different processors (through GraphBLAS).
Like when I have a (MATCH a:A) RETURN a.property and RedisGraph needs to get the matrix for nodes of type A (and I assume some structure that will get the property). Will these happen in sequence or can data access like this be spread across multiple processors?