Let’s talk about the 4th day in San Francisco at Oracle OpenWorld 2013. Many conferences, hands on labs, keynotes and so on. Some sessions are in the biggest room with many people. Today, we will focus on the new In-Memory option. I have already posted about that feature, but today, I went to an In-Memory session to get a little more details on it – many pictures and less text (easier to gigest ;-).

Larry Ellison has announced the In-Memory option during the opening Keynote and he presented an impressive demo with a speed improvement of over 1300 times.

Concept

Historically, the tables were stored in row format:

table_in_rows

It’s really efficient to manipulate a few rows when we need to access almost all columns (during insert for example). That’s why, Larry told us, it’s the best format for OLTP transactions. In OLTP, we work mainly with rows (add, change or remove).

Currently, many databases have OLTP activity and reporting activities at the same time. In reporting, we are focused on columns, we take all rows regarding a specific filter and we join to another table filtered also on a column.

A new format has been discussed for that purpose – storing the table in columns:

table_in_columns

In-Memory

The column format is a totally new in Oracle and will exist only in memory. It will coexist with the row format and should never interfere with all regular operation regarding availability. RMAN, Data Guard or Golden Gate will not be impacted by that new format for backup or data replication because on disk, only one format will be saved and it’s the same as before.

in_memory_storage

The columns will be stored using a compression algorithm but in a different way as HCC (Hybrid Columnar Expression) because it focuses on performance. The optimizer will have a new task, it will decide which format will be used to get the data for all queries. Before, scanning all tables to read a column was a long operation. With In-Memory, it will become faster than using an index.

The new format will also be available in the next release of Oracle TimesTen In-Memory Database.

The key point for Oracle Database 12c is that the database will work in a hybrid mode, not all database will reside in memory, data can be accessed on disk or on flash drives.

So, what happens in case of a crash? There is no need to wait for objects to be loaded In-Memory before starting operations. Data will be accessed from disk until the objects are present in memory unlike a full In-Memory database.

How do I activate In-Memory?

The core message from Oracle is that there is no need to update the application. And more, the new format will replace what they call “analytic indexes”, created to speed up some statements.

The new option will be enabled with a single init parameter:

 

alter system set inmemory_area = XXX GB

Then, you just need to tell Oracle which table should be loaded In-Memory:

alter table/partition inmemory;

Availability

The In-Memory option will be available next year, but we cannot have more details yet.

Some tests

The demo presented during the opening keynote is not a fake. Oracle OpenWorld visitors in San Francisco were able to have a look at the Engineered System booth to test it in live.

IMG_0460

If you are interested on this new option, Oracle has put a survey online. Feel free to fill in that survey using the following link: https://www.surveymonkey.com/s/inmemorydatabase

I hope I will be soon be able to test this feature to have a deeper look at its strengths and weaknesses.