Today the new In-Memory technique for the Oracle database has been introduced. This is not something like TimesTen(+) or so, but a new way of querying data. The concept is like this: All tables that are marked for keeping data in-memory, will be "stored" using both row and column format. The good old row format will be used for the regular OLTP systems, while the column format is used for queries. To speed up those queries, the column format will be held in-memory - and in-memory only. Only the row format goes to disk, just like nowadays.
To keep all data in sync, the in-memory data will be marked stale during a DML option that affects that data. Therefore the overhead added to DML statements is very small. Upon request the in-memory data will be updated.
This in-memory data, a.k.a. the "Column Store" is an optional component of the SGA. So you have to switch it on. And you can pick which tables, which partitions, which columns and whether you want it distributed or not (over different RAC nodes) should be kept in-memory.
The columnar data is loaded in compressed format. So it just takes a fraction of the space that the same total number of rows use (as usually a lot of columns contain the same values and can be more compressed). And this column store can / will be indexed as well.
So you can have an OLTP and a Data Warehouse / Reporting on the same structures. And depending on your query and data , the optimiser will either use the buffer cache or the column store. So the optimiser is "fully aware" of the in-memory database.
The In-Memory database is planned as an option (so additional licensing required) for the 12.1.0.2 release of the databae - expected next calendar year.
Comments