Friday Jul 01, 2016

Questions You Asked: Where did the other bloom filter go?

A couple of weeks ago at the Spring Conference of the Bulgarian Oracle User Group, Joel Goodman gave a great session on Bloom Filters and how the can improve the performance of hash joins in the Oracle Database especially in the In-Memory column store. At the end of that session the chap sitting in front of me turned around to show me an execution plan they got while testing Oracle Database In-Memory and posed the following question, “Where did the other bloom filter go?”

[Read More]

Thursday Jun 23, 2016

Defining Analytics

We tell people that Database In-Memory is all about improving analytic processing. The definition that I use is "using aggregation to find patterns or trends in data". I believe I saw this used in one of Juan Loaiza's OpenWorld presentations and it made sense to me. After all Database In-Memory is really good at scanning and filtering a lot of data, and most of the articles on this blog echo that theme.

The problem is, the definition that I use doesn't necessarily make sense for everyone. When we do presentations or give webinars many people don't seem to really get what we mean by analytics.

[Read More]

Friday Jun 03, 2016

Questions You Asked: Why do I sometimes get better compression using Advanced Row compression compared to In-Memory Query compression?

The compression techniques that are use for in-memory compression are different from what we use for on-disk compression. The compression on-disk is designed to reduce the overall space usage for the table segments. While the compression algorithms used in memory are designed for query performance and speeding up the queries by being able to operate on the compressed format. Due to the different techniques, it is not uncommon to have table segments see different compression ratios and different sizes in-memory and on-disk.

[Read More]

Monday Apr 18, 2016

Why does BYTES_NOT_POPULATED suddenly show a non-zero value?

I recently got a question from a customer who has just begun adopting Database In-Memory and thought it was worth answering as a blog post in case anyone else had encountered the same scenario and was wondering what was going on.

Here is the question I got:

“I've observed a scenario where a table is fully populated in the In-Memory column store with 0 in the  BYTES_NOT_POPULATED column in v$im_segments, but after some time, the BYTES_NOT_POPULATED column shows a non-zero value. Why is Oracle purging part of my table from memory?”

Let me begin to answer this by assuring you all that Oracle does not purge your data out of the In-Memory column store.

[Read More]

Monday Apr 11, 2016

Oracle OpenWorld 2016 call for papers has begun!

Believe it or not, it's time to start thinking about Oracle OpenWorld 2016!

The Oracle OpenWorld 2016 call for papers is now opens! Oracle customers and partners are encouraged to submit proposals to present at this year's Oracle OpenWorld conference, which will be held September 18 - 22, 2016 at the Moscone Center in San Francisco. Details and submission guidelines are available on the Oracle OpenWorld Call for Papers web site. The deadline for submissions is Friday,  May 9, 11:59 p.m. PDT.

We look forward to checking out your sessions on Oracle Database In-Memory and how it has changed the way you do business!

Friday Mar 25, 2016

Why didn't Database In-Memory improve the performance of my query?

After I posted last weeks blog post on identifying analytic queries that benefit from Database In-Memory, I got the following question, Why didn't Database In-Memory improve the performance of my query?"

I've simplified the query in question down to the following,

SELECT Count(DISTINCT cust_id)
FROM ssh.sales
WHERE amount_sold > 1;

So, why didn’t Database In-Memory improve the performance of this query?

[Read More]

Friday Mar 18, 2016

How do I identify analytic queries that will benefit from Database In-Memory?

Although Database In-Memory can be used in both Enterprise OLTP systems and Data Warehouses, only analytic queries will benefit from accessing data from the In-Memory column store (IM column store). Remember the IM column store enables large volumes of data to be rapidly scanned and processed using a variety of optimizations. Simpler transaction based queries, such as a primary key look up do not benefit from the IM column store and are automatically directed to the buffer cache.

But how do you identify an analytic query?

An analytic query is one where a large amount of data is scanned and filtered to return critical data that drives better business decisions. It doesn’t necessarily mean a query that contains one of Oracle’s analytical functions but they can also see benefits. A star query is a good example of such a query. By star query, I mean a query where a large fact table (center of the star) is joined to a number of smaller dimension tables (the points of the star).

If you don’t have a simple star schema (most people don’t) then you can identify a good candidate query by examining some key characteristics.

[Read More]

Friday Nov 13, 2015

Questions You Asked: When using interval partitioning, will new partitions be placed In-Memory?

This is the second in our series of "Questions You Asked" and this time the question has to do with interval partitioning and whether newly created partitions will be populated into the IM column store.

We'll begin our experiment by creating an interval partitioned table based on the SUPPLIER table from our SSB schema. I've added a key_no column to make the interval partitioning easy. We then insert data into three partitions and list the results. Note that the first partition is named p1 because we had to create at least one partition with our CREATE TABLE statement. The other two are system generated names and those partitions were created automatically as part of the interval partitioning feature when we ran the second and third insert statements as you can see below.

[Read More]

Saturday Sep 12, 2015

Oracle Open World 2015 Time to plan your schedule!

There are only 6 weeks to go until Oracle Open World, the largest gathering of Oracle customers, partners, developers, and technology enthusiasts, which begins on October 25th in San Francisco.

Of course the In-Memory development group will be there and you will have multiple opportunities to meet up with us, in one of our technical sessions, our hands-on-labs or at the Oracle demogrounds.

This year the In-Memory team has 4 technical sessions and there are also 5 excellent customer sessions you shouldn't miss.

[Read More]

Tuesday Jul 21, 2015

Oracle Database In-Memory Bundle Patch 10 Released

The latest Bundle Patch for Database In-Memory has been released. The Bundle Patch is 21188742 or Bundle Patch 10 for Engineered Systems and DB In-Memory (July2015)). This Bundle Patch improves the performance of mixed workload environments (OLTP & DW workloads), as well as enhancing the performance of analytic queries with aggregation. More information on the latest Bundle Patch can be found in the MOS note 21188742.8 or in the Mos note: Bundle Patches for Engineered Systems and DB In-Memory (Doc ID 1937782.1).

[Read More]

Friday Jul 10, 2015

Star Schema Challenge - Part 2.1

In Star Schema Challenge – Part 2 I revealed baseline results for my query workload running on a 500 million row star schema with all tables marked NO INMEMORY and In-Memory Aggregation prevented using the NO_VECTOR_TRANSFORM hint. With a median of 16.9 seconds per query (allowing for an average think time between queries of 5 seconds), I decided that 25 users were enough for a baseline.

After my first post in this series someone suggested that the best implementation might be a de-normalized table. I decided to satisfy this user’s curiosity and test a de-normalized table also, starting with NO INMEMORY test. (Vector Transform is not applicable to the de-normalized table because it does not join to another table.)

[Read More]

Friday May 08, 2015

Getting started with Oracle Database In-Memory Part V - Controlling Access

I’m finally going to make good on a promise I made way back in part 3 of our getting started with In-Memory series, to explain how you could control which queries use the In-Memory column store (IM column store) and which don't.

As with all new query performances enhancing features in the Oracle Database, a number of initialization parameters and hints have been introduce that enable you to control when and how the IM column store will be used. This post provides information on the initialization parameter, while the details on the Optimizer hint that control the use of the IM column store can be found on the Optimizer blog.

[Read More]

Friday Apr 17, 2015

CPU Efficient Query Processing with Database In-Memory

In my last post I talked about In-Memory Aggregation and mentioned that the vector transformation plan is more CPU efficient than alternative plans. In this post I’ll provide a few examples to illustrate just how effective a vector transformation plan can be.

Let’s consider a star schema, with one fact table and 9 dimension tables (time, customer, product, channel and demographic attributes such as age and income).

9 Dimensional Star

[Read More]

Tuesday Mar 31, 2015

Push-Down: Making Queries Fast!

In our previous posts we discussed the basic architecture of the In-Memory column store (IM column store) and now we want to drill down into some of the unique performance enhancing features. Push-down is one of the optimizations that makes scanning columns in the IM column store very efficient. Oracle Database In-Memory has the ability to push predicates, aggregations and group-bys down into the scan of a column or columns.  This ability to push-down allows us to take advantage of other performance enhancing features of Database In-Memory like SIMD vector processing and storage indexes.

[Read More]

Monday Feb 16, 2015

Getting started with Oracle Database In-Memory Part V - Aggregation

When most people think about Oracle Database In-Memory (Database In-Memory), the first thing that comes to mind is super fast scanning and filtering operations. But what you may not know is Database In-Memory also includes many SQL optimizations designed to accelerate star and snowflake type queries. We refer to this collection of SQL optimizations as In-Memory Aggregation (IMA). IMA is typically 3-10x faster than ‘conventional’ plans, and that’s in addition to the improvements provided by scanning and filtering the data via the In-Memory column store (IM column store).

[Read More]

The Oracle Database In-Memory blog is written by the Oracle product management team and sheds light on all things In-Memory.


« July 2016