In-Memory¶
IFS Cloud enable users to leverage Oracle In-Memory columnar store introduced in Oracle 12C Enterprise Edition. With In-Memory acceleration, users will be able to run analytical queries against IFS Cloud several magnitudes faster than before.
Type of queries that will mostly benefits from In-Memory are:
- Queries that contain filters, group by, inner joins
- Queries that are filtering on non-indexed columns
- Queries that scans many rows, and only select few columns and rows
- Queries that contain aggregate functions such as MAX, MIN, SUM in their select closure
IFS Cloud includes In-Memory Acceleration Packages in its standard offering. Above these prepared In-Memory Acceleration Packages, customers can create their own acceleration packages. In an environment without Oracle Enterprise Edition, these packages are still included but in order to use them you need to have the Oracle 12C (or newer) Enterprise Edition database installed together with the In-Memory option enabled. An In-Memory Acceleration Package contains one or several database objects (i.e. tables and materialized views) that could be loaded into the In-Memory area.
Note: If the database is lifted to Enterprise Edition, or if the In-Memory option is enabled on an existing database, it is necessary to run the Prepare Database step and redeploy all database objects again.
In-Memory Acceleration Packages¶
The In-Memory Acceleration Packages page displays all the In-Memory Acceleration Packages that are installed in IFS Cloud
Details listed in this page include:
- Package Name: Name of the In-Memory Acceleration Package
- Estimated Memory Usage (MB): Shows the estimated In-Memory requirement for this In-Memory Acceleration Package in megabytes. Please note that this is a rough estimate and a value is calculated on request.
- Enabled: Indicate whether this In-Memory Acceleration Package is In-Memory enabled or not
- Percentage Loaded: Indicate how much of the In-Memory Acceleration Package that is loaded into memory.
- Memory Used (MB): Shows how much memory that actually is used by this individual In-Memory Acceleration Package (when enabled). If multiple In-Memory Acceleration Packages contain the same database object, all of them will include the In-Memory size of that object.
- Custom Package: Indicate whether this is a customer created In-Memory Acceleration Package or IFS standard delivered.
Action buttons in In-Memory Acceleration Packages¶
From the In-Memory Package Acceleration Packages page, user can perform these actions:
- Enable/Disable: Enabling or disabling of In-Memory Acceleration Package.
- Estimated Memory Usage: Calculate the estimated memory requirement for this In-Memory Acceleration Package.
The action button Remove Analytical Indexes is only available when that In-Memory Acceleration Package is enabled for In-Memory.
Note: Dropping the analytical indexes is a non reversible operation.
However, since all DDL commands to recreate those indexes can be found in the Database Alert Log under Category ID In-Memory, it is possible to manually rebuild them.
Custom In-Memory Acceleration Packages¶
It is possible to create custom In-Memory Acceleration Packages. It can be done using the same page meaning that all functionality like calculating estimated memory requirement, enabling/disabling In-Memory Acceleration Packages, etc. is available as well. A custom In-Memory Acceleration Package contains some header information and a list of related database objects (i.e. tables and materialized views). Please note that user cannot edit In-Memory Acceleration Packages that are provided by IFS or when it is enabled for In-Memory.
In-Memory Compression Level Setting¶
When an In-Memory Acceleration Package is enabled, the system will replicate all included tables into the In-Memory area. To save space, In-Memory tables are compressed when loaded into the memory. The compression level can be altered to suit system administrator's preference. This is done in the System Parameters window and in the parameter In-Memory compression level
. The default compression level is set to QUERY_LOW meaning that the compression is optimized for querying rather than space saving.
Available compression levels are
- DML: Optimized for DML operations such as insert and update
- QUERY_LOW: Optimized for query performance with slight emphasis on space saving (default compression level in IFS Cloud)
- QUERY_HIGH: Optimized for query performance with more emphasis on space saving
- CAPACITY_LOW: Optimized for space saving
- CAPACITY_HIGH: Heavily optimized for space saving at some degradation of In-Memory performance
All the memory operations such as estimates and enabling will use this setting. Hence, In-Memory Acceleration Packages need to disabled from In-Memory and enabled again to get affect from a change of the compression level. In-Memory estimates need to be carried out individually per compression level.
Custom Fields Support¶
Custom fields tables are supported with In-Memory Acceleration Packages. When persistent custom fields are enabled, all relevant custom fields tables are automatically added to the In-Memory Acceleration Packages that contain the base tables for that particular custom fields.
Note: If you enable custom fields for a table that is already In-Memory enabled, you have to explicitly re-enable the package in order to enable the custom field table. Same procedure need to be followed for estimating In-Memory requirements.