The MDEX Engine is optimized for performance. This section reviews those characteristics of the Engine that have a direct impact on its performance.
The following diagram represents a typical MDEX Engine deployment architecture. It shows a set of application servers and MDEX Engines, each with a dedicated hardware load balancer. The Information Transformation Layer (ITL) that supplies data to the MDEX Engine index is not shown.
In this diagram, a load balancer directs query requests to one of the MDEX Engines. If you are using servers with dual-core or quad-core processors, multiple multithreaded MDEX Engines can be configured on the same machine, with two or more threads configured for each MDEX Engine.
The MDEX Engine stores index structures in system memory to provide rapid access during query execution. Less frequently accessed structures and record data are stored on disk; these are pulled into RAM only when needed.
The data and indexes are stored in memory and on disk in a manner that provides optimal locality for common access patterns. When queries have to access disk to retrieve information, they find all the data required with the minimum number of seek operations. This decreases the cumulative disk access seek times thereby decreasing the time needed for query processing and increasing query throughput.
The MDEX Engine has a unified dynamic cache where it stores intermediate results and index structures for future processing. When similar requests are made to the Engine with slight changes (example: sorting by price, then ranking, then popularity), the Engine stores intermediate results in the cache. This makes possible the optimal reuse of data previously retrieved from slower sources, such as disk. The cache is dynamically managed by the MDEX Engine to keep the optimal data cached for the current query patterns.
The Guided Search implementation has a stateless server architecture. Query processing does not require any state information about prior queries from this client or other clients. Because of this, when multiple identical MDEX Engines are placed in parallel behind a load balancer, the response will be identical regardless of which server receives the request. The throughput of such a system is equal to the throughput of a single server times the number of parallel servers.
The MDEX Engine always runs in multithreaded mode with the total number of threads set to 1 by default. Oracle recommends that you increase this number to maximize your use of system resources. On processors that are multithreaded or multicore, multiple query threads can use a single processor at the same time.
The MDEX Engine utilizes 64-bit operating systems and processors, and can store and access larger volumes of data with scale. The MDEX Engine can utilize as much physical memory as can be placed in a server. Running in the 64-bit environment, the MDEX Engine can service many memory-intensive requests simultaneously without the risk of running out of memory address space. This, combined with a large Dgraph cache (1GB), provides a significant performance benefit.