The performance of an MDEX Engine process is a function of a number of factors.
Generally, on a host system with N CPUs or cores, where one single-threaded MDEX Engine can serve K operations/seconds of query load, N or more independent MDEX Engine processes will serve somewhat less than N times K, commonly in the 80-90% utilization range. In other words, given the base single-instance performance of K, the expected N-processor performance is given by
.
The expected performance for one multithreaded MDEX Engine with more than one thread is similar, but generally somewhat less. In this case, the expected performance is given by the above formula, except with utilization in the 65% to 85% range (
). However, less RAM is required for running one multithreaded MDEX Engine with threads more than one compared with running separate single-threaded MDEX Engines.
For example, if one single-threaded MDEX Engine provides 20 ops/sec on a given load, running two MDEX Engines on a dual processor may provide around 36 ops/sec (U=90%, K=20, N=2). Running the same application with an MDEX Engine with threads more than one may provide 32 ops/sec (U=80%, K=20, N=2).
Similarly, if a single MDEX Engine requires 16GB of RAM, two Engines will require 32GB. Whereas a single MDEX Engine with more than one processing thread will only require slightly more than 16GB of RAM.
To summarize, Oracle recommends that you run a single MDEX Engine with the number of threads set to more than one, as opposed to multiple MDEX Engines. (Running multiple MDEX Engines introduces implementation complexity and also requires a load balancer.)
MDEX Engine Thread Requirements for Partial Updates
The MDEX Engine places a cap on the number of threads available for partial updates (that is, for admin operations such as admin?op=update) and for certain internal actions consequently performed by the MDEX Engine. This cap is set by the formula (N+1)/2, where N is the argument of the --threads switch of the dgraph command specified at startup time. This cap limits the impact of these administrative/internal actions on query processing.
If an MDEX instance is to run partial updates, recommended practice is to deploy the instance on a system with at least 8 cores available so that there are sufficient computing resources available for partial updates.