SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 1

SAP AMERICA

August 7, 2003 10:00 a.m. CDT

Moderator Ladies and gentlemen, thank you for standing by and welcome to BW

Know How Network conference call. At this time all participant lines are

in a listen-only mode. Later there will be an opportunity for questions and

instructions will be given at that time. As a reminder, the conference is

being recorded.

I would now like to turn the call over to Mr. Oliver Mayer. Please go

ahead.

O. Mayer Thank you, Rita. Good morning, everybody, or as the case may be if

you’re dialing in from Europe, good evening. I’d like to welcome

everybody to today’s call, which will cover the all-important BW OLAP

cache. So, again, thanks everybody for taking their time out of their busy

day to attend today’s call. I think we’ll have lots of good information. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 2

So without further ado, I will turn it over to Klaus Werner, our speaker for

today.

K. Werner Hello, everybody. Let’s get started right away. Let’s have a look at slide

number two, which is a content slide. What we will cover today is an

overview on the OLAP cache. The entire call will be on the global OLAP

cache, so first of all, an overview, what do we mean by OLAP cache and

what is it about. Next thing is the usage during query execution. Then we

have a comparison between the OLAP cache and aggregates. We’ll talk

about the global OLAP cache maintenance, monitoring, and we also give

some recommendations at the end.

So we start with the overview on the OLAP cache. The OLAP cache

buffers query (result set) data in order to improve performance of

subsequent query executions. So if somebody runs a query, a result set is

retrieved by the OLAP processor and is delivered, first of all, to the front

end and is also buffered in the so-called OLAP cache.

It comes in two flavors – the old cache that has always existed, the local

cache, which is session dependent, and in which the current query data is

stored in memory. That is available since BW 1.2B. Now we have a new SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 3 thing, which is new with BW 3.x, which is a so-called global OLAP cache. This one is session and user independent, and as I said, is new with

BW 3.x.

Since this is quite new, we have ongoing enhancements, and the information in this presentation refers to at least support package 13, support package 7, respectively, for BW 3.0B or 3.1C. The focus of this presentation is clearly the global OLAP cache, so whenever we refer to

OLAP cache, we mean the global OLAP cache, which is new with BW

3.0.

Go to the next slide – location of the global OLAP cache. The global

OLAP cache is stored, first of all, in shared memory. There is a relatively new SAP memory segment, the shared memory, whose size is defined with this parameter given here, and the number of objects that can be stored in there at the same time is the max objects parameter. This is, of course, application server dependent, because the memory itself is application server dependent. We’re talking about the location, so where is data stored in case of an overflow of this cache. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 4

There are three possibilities that, first of all, something is removed from the cache, which is the least recently used. The next possibility is to swap into a file, so move data from the memory to a file or to a cluster table, and then load it back in case it is needed again. The next possibility is file or cluster table, as we’ve just mentioned for swapping, and it is also possible to immediately use the file or the cluster table instead of the memory.

This is possible, again, in two flavors – application server dependent or independent. You can see this below in this screenshot, where it is possible to define these settings for each single query. So in the query properties you can specify, first of all, that the cache is inactive, so caching is not used at all. That will be a situation similar to what you have in the BW 2.0 system, for example. Then the setting number 1 main memory cache without swapping, so it will be stored in main memory, but not swapped to a file or across the table.

The next entry is with swapping, so store in memory and swap out to a file or cluster table in case the memory is full. The third option is to immediately write to a cluster table or a flat file for each individual application server or do the same thing across application servers, so SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 5 independent of the application server. In this case we have a central file or have a central cluster table, and write the query result set to this cluster table or file.

The next section is about usage during query execution. On the slide “query execution order of data availability check” we can see how and in which order the data availability is checked during a query execution. The first thing that would happen if you run a query or a navigational step is that it will be checked if the data is still available in the local cache. That means, for example, if you have a very large query and then you restrict to a fixed value within that query, it would use the local cache because that data is already available, and it has just to restrict from that data to give a sub-selection of that data in your new navigation step. That will be taken out of the local OLAP cache.

The next step will be to check if this is not available, is it available maybe in the global OLAP cache. Has this query already been run by some other user or in some other session with those selection criteria? Is the data available in the global OLAP cache? If yes, data is retrieved from there.

If no, in case of an InfoCube, say, as an InfoProvider, it will be checked SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 6 do I have aggregates available for this query. If no, I have to go through the InfoProvider itself on the database, in this example a basic InfoCube.

On the next slide we see the tradeoff between different ways of accessing data, getting data from up to an offline portal cache, pre-calculation and so on. The important part here is where does the OLAP cache come in, somewhere between pre-calculation and aggregates. Pre-calculation means that you calculate query results and save them somewhere in the cluster table and retrieve those pre-calculated data, which is static.

The OLAP cache, one level underneath is more flexible so it’s more an online feature, not an offline pre-calculated feature located mainly in memory or, again, in cluster tables or files. Underneath the OLAP cache there are the aggregates. So OLAP cache is somewhere between the aggregates and pre-calculation in terms of performance, as well as in terms of reusability. Offline will usually give me the best performance.

Accessing the InfoCube will usually give me the worst performance.

Somewhere in between we have located the OLAP cache with major performance benefits compared to aggregates or InfoCubes, but on the other hand, less reusability compared to aggregates or InfoCubes. That’s SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 7 the idea of this slide, so you have a tradeoff between performance and reusability.

Let’s go to the next slide. We have a comparison of the global OLAP cache and aggregates. Why is that? Because, first of all, probably everybody attending this call knows aggregates. The global OLAP cache and aggregates have some similarities and some differences. For the understanding, it’s better to really compare these two and see how do they work together or how are they somehow competing. Global OLAP cache and aggregates both store redundant data in order to improve query performance.

One stores the data on the database. One stores the data mainly in memory, but how do they work together? It’s not like they are in some kind of competition. They are defined on different levels of the architecture and complement one another. That’s important to understand.

As an example, the global OLAP cache is filled and the data is retrieved, for example, from an aggregate.

On the other hand, when you can use the global OLAP cache, it takes load off the aggregate because not everybody has to use those aggregates, SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 8 because of subsequent execution of the query will go to the OLAP cache.

So it will take load off your database. But it’s important to understand there is no competition, and it’s mentioned here explicitly again this is not a guideline to decide which one is better because there is no better or worse. It’s just that you have to have both for best performance, both in aligned coexistence.

We go the slide – “properties of global OLAP cache and aggregates”. The physical location is as we’ve seen for the OLAP cache in the main memory file or cluster table. For the aggregates it’s on the database. So in regards to server dependency we have partially application server dependent OLAP cache, and totally application server independent aggregates. The query dependency is fully query dependent for the OLAP cache and independent of a query for the aggregates.

InfoProviders: the aggregates, as you probably know, can only be defined on basic InfoCubes. For the global OLAP cache all InfoProviders can be used. In terms of performance, we have a rather stable, very good performance for the global OLAP cache, and for the aggregate it really depends on the size of the aggregates of your data model, how your SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 9 queries match the aggregates and so on, so there is more to take into consideration when talking about performance of the aggregates.

Availability of data in the OLAP cache, of course, depends on previous query executions because the OLAP cache only stores data if a query has been executed, and the frequency of invalidations. We’ll talk about invalidations in detail later on. The availability of data in the aggregates is always given. You always have the data, the currently reportable data, available in the aggregates.

Granularity of data, this is a very interesting aspect. The global OLAP cache is pretty close to the query definition. It really stores the summarized data according to the query, according to the query navigations. Also, currency conversions are already performed. For the aggregate you probably know you can filter or summarize by characteristics, navigational attributes, hierarchy levels. This is independent of the query.

Sub-queries or selections, like restricted key figures, put different selections through the OLAP processor. Both have the same behavior.

Within one query you can use more than one aggregate, as you probably SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 10 know, and you can also use more than one global cache entry. If you have several selections in your query, several query cache entries can be used.

Go to the next slide – global OLAP cache maintenance. First of all, let’s talk about the global OLAP cache relevant parameters. As we’ve already seen, there is a memory segment in the SAP basis, and there is a basis profile parameter that determines the size of this memory segment and the maximum number of objects that can be stored in that particular area. On the BW side we have customizing of the size of the local OLAP cache and of the global OLAP cache.

We can determine whether the global OLAP cache is globally active or inactive in the system. We can specify a persistence mode, which means here you can determine whether a file or a cluster table should be used in case of swapping or in case of writing queries directly to a persistent data store. And you can specify a flat file name, which is then used in case of using a flat file as persistent mode. All of those parameters can be set by a transaction RSRCACHE or RSRT.

Now let’s talk about invalidation of global OLAP cache, which is the next slide. Those entries in the OLAP cache are a snapshot of query data, when SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 11 the query was run basically. Over time things will change. For example, an InfoProvider will get new data, and then the cache must be invalidated or those entries must be invalidated that no longer refer to the current state. So invalidations will happen based on time stamps and time stamps are given for InfoProviders.

When has the last data been loaded? When was the last deletion of data as examples. The report itself, the query could be changed, so there is a query generation time that comes in. There may be pre-calculated value sets, so-called buckets. They may also change or changes of independent

InfoProviders may occur. Then there is the change run. Changes in navigational attributes, changes in hierarchies will certainly influence query results.

So also in case of a change run, you will have different query results and invalidations take place. The same is true for currencies because currency conversions are already pre-calculated in the OLAP cache. So if currency conversion rates, for example, change, then the entries based on the old currency conversion rates are no longer valid and must be invalidated. So query results are, in general, invalidated if one component of this query has changed. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 12

The next item here is about a frequently asked question. How about change of key dates? Just to clarify this: The key date is basically stored in a variable. There will be a new cache entry if this key date changes, but the old entry is not invalidated, because somebody else might still go back to the old key date in the query and report on the old data so this is not a case of invalidation. This is a case of a different variable value. That’s important to understand. There’s also the possibility of manually invalidating the cache, which basically means you delete all the cache entries.

The next slide talks about switching off the global OLAP cache. The global OLAP cache can be switched off, first of all, globally for the entire system. It can also be switched off for an InfoProvider. If you do this, it just means that this is the default for new queries. So whenever you define a new query on that particular InfoProvider, for this query the cache will not be used. It will not affect the old queries on this InfoProvider.

For old queries you would have to change the setting manually at the query definition or the query properties. For a query, you can individually set the OLAP cache on or off. For one query execution for testing, you SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 13 can do the same when you run transaction RSRT. RSRT is a transaction where you can run queries within the normal SAP GUI and then debug.

There you can switch off the usage of the cache for testing purposes.

Reasons for switching off is, first of all, performance testing, but also performance tuning. If you have a very fast query, you may not want to have the cache overhead, because there is certainly some overhead for checking if an entry is available in the cache or not, and if the query is fast anyway, why would you want to use the cache. You may want to avoid unnecessary swapping in the cache as well.

If you have a lot of queries that are, for example, fast and that unnecessarily caused swapping in the cache, you may want to switch it off for those. So queries to be switched off are first of all queries that have large result sets, for example just used for batch printing. Why would you ruin your OLAP cache and fill your memory unnecessarily with such a query, so that would certainly be a candidate for switching off.

Queries with frequent invalidations: If you have an InfoProvider to which you load data every five minutes, you would probably not want to have the cache active for those queries, and an InfoProvider with a lot of ad hoc SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 14 queries maybe. If you create new queries, just for one time usage, you wouldn’t want to have them cached either.

On this next slide we’ll talk about pre-calculation. Whenever a query is executed, the global OLAP cache is filled. So whenever you use the

OLAP processor basically, independent of whether you use it through the

Bex Analyzer, a Web application, third-party front ends, the reporting agent, or for example, RSRTRACE. Whenever you execute a query, this

OLAP cache is filled. You can make use of that fact by pre-calculating query results and having them stored automatically in the global OLAP cache.

This is, for example, possible with the reporting agent. It’s not what that reporting agent has been designed for, but you can kind of abuse the reporting agent to pre-calculate also the global OLAP cache. So you don’t have to use any specific option for this cache filling. You can, for example, use the pre-calculation of Web templates to fill this global OLAP cache.

You can run those queries after, for example, data loading or change runs are finished. You can kick off the reporting agent and pre-calculate your SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 15 queries. This could be used for very important and performance critical queries. Again, it’s not a specific setting for the global OLAP cache. It’s just a regular reporting agent that is used for also filling the OLAP cache.

That happens automatically when you specify settings in their reporting agent, and you run those. So as you maybe know, you can specify that you pre-calculate users specifically. You can choose roles or individual users for pre-calculating their query results as they would see them, depending on their authorization. Or you can also use the control query to pre-calculate your query results, your navigation steps basically.

Running the queries with user authorization or specific selections with the control query has advantages and disadvantages. A disadvantage may be that you have more cache entries, more different ones. But on the other hand, your cache entries are more specific. You have improved performance because it’s more specific smaller result sets.

On the other hand, you may have more redundancy, especially if you have similar authorizations for different users. That may mean also more maintenance effort for you. If you run a query with kind of all authorizations or general selections, then there are fewer cache entries, SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 16 less specific, worse performance, but on the other hand, also easier maintenance.

We go to slide number 18 now, the content slide. “Monitoring”, and go to

19 immediately. First of all, let’s talk about the structure. That’s important to understand in order to understand the monitor itself. As already mentioned before, the global OLAP cache is query dependent. So the first level parent of all entries is the query. Within this query you use variables. You use presentation hierarchies. That’s the next level.

You may use different presentation hierarchies, for example. That would result in different entries on this next level. Then we come to the selections, currencies. Currency conversion is already pre-calculated in the OLAP cache. The next level is the data itself. That’s the structure of the global OLAP cache. The last two – global data selections, currency and data – are summarized in one entry in the monitor of the global OLAP cache.

On the next slide we see screenshots of what the monitor transaction looks like now. I mean support package 13 or higher. You may still remember an older screenshot. It looked different before. So we have those buttons SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 17 basically on the left upper side, and if you press those buttons you see what happens. If you press the button cache parameters, you will see the local cache size, the global cache size, whether the cache is active and also the persistence mode.

If you press the main memory button, then you will see, again, the maximum cache size, which is the sizing of specified as a parameter, the current cache size, the current swap size, and what is used of the current cache of the maximum the cache could grow to. In this example we would have 250 megabytes customized, but only 414 kilobytes used, so that’s close to zero percent and that’s why it gives you zero percent here.

The overall number of cache entries, 634, is also given here. We have 634 cache entries.

The next section is interesting. The buffer poll time will just tell you how old this information is that is currently displayed. It’s by default updated once in five minutes. The next number, the 32% refer to the maximum usage of the cache, taking into account the size, as well as the number of objects. So here at the moment the limiting factor is the number of objects. We see that we have 634 current cache entries, out of 2,000 we have specified in the parameter. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 18

You cannot see the 2,000 here in this slide, but that’s what you can see in the next slide. So 32% of the cache is used. Not the cache size in this case, but the maximum number of objects. The next “buffer setting cache” gives you the information that at the moment in this system 100% of this basis memory area is currently used by the OLAP cache, so nobody else is at the moment using this segment, this SAP shared memory segment. That’s this information. There may be other components also using it and then you would see a low number here.

The next thing you see, if you press on the button, for example, application server, then you see the current cache size there. You see the current swap size, which doesn’t make any sense because it’s already swapping this is talking about. So it’s basically the current swap size itself that is displayed here in the first row, and in the second row it would say swapping of the swapping, but there is no swapping of the swapping.

So in the next support package you will no longer see this line. It doesn’t make any sense. You will see the current cache entries, which means basically the currently swapped entries on an application server level. The same information you get for cross-application servers if you press the SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 19 second to last button. Whenever you press buffer objects, underneath one of those buttons you will get a view of the current buffered objects.

In this example we pressed not this last button, it’s just for display in this slide. We pressed the button on the main memory because the others are empty anyway. There you see the query name first. You remember the structure of the global OLAP cache. The first level is the query. The next level is hierarchies and variables, and then summarized the selections, currency conversions, and the data. If you double-click on this hierarchies and variables, you can also see which hierarchies and variables are taken into account here.

On the next slide, “cache monitor basis” you see a basis view, a basis transaction that some of you may know, the ST02, which is a view on the memory that SAP allocates. This is not BW specific, but basically Web

Application Server specific.

Here we have the last line, export/import shared memory, and that’s where you get the basis view on this memory segment that is used for the global

OLAP cache. You see a hit ratio here. You get a size, and the last figure you see here in this screenshot is the number of entries that you can have SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 20 in this cache, so this is the 2,000 I have referred to in this slide before.

That’s the 2,000, out of which currently 634 entries were used and that’s why it gives you the usage of 32% in this previous slide.

On the next slide, the query properties, you see a screenshot of transaction

RSRT. You specify a query, and press the button “technical information”, and within the technical information you have a lot of data about the query

– performance relevant data and also data like generation time, internal technical names, and things like that. One section of that is the cache- relevant data. It specifies whether the query can use the cache.

It usually says yes; it rarely says no. If it says no, it tells you why it cannot use that cache. You see the query generation time and you see the last data change of the underlying InfoProvider. If you press this properties button, then you will see, first of all, the read mode. You all probably know the read mode, and on the same level where you can specify query specifically read mode, you can now specify also the cache mode. That’s exactly that little screenshot we had in our of the first slides where you can specify for one individual query whether the cache is active or not, and whether you use main memory with, without swapping, or cluster table or flat file application server dependent or independent. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 21

On the next slide we have given some exceptions, in which case the OLAP cache will or can at the moment not be used. It’s currently not used for queries containing variables with replacement path, sometimes also referred to as pre-query. It’s at the moment not yet used for most recent reporting, but that has been implemented with support package 15 so this is the latest information.

Another restriction is that large objects are not buffered in memory, so if you chose memory buffering and you have a very large query result set that exceeds about something between a fourth and a fifth of the export/ import buffer, then the result will not be written through the global OLAP cache.

On this next slide or second slide, we give some recommendations for setting the parameters. We will investigate that more and we will give you more detailed information that will be published in the SAP Service

Marketplace, but this is for now what we usually recommend. 80% recommendation: Say for 80% of the systems it should be fine, that you use 200 megabytes for the global OLAP cache, and for the export/import buffer set memory 100 megabytes. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 22

This last value is not the default setting. That’s a thing you’d have to change because the default is only four megabyte and you could run out of these four megabyte easily. So you should check in your system the usage of this segment in transaction ST02 and increase the size if it is too small.

Different aspects need to be considered when setting up those parameters, and we will elaborate on this a little more in the next slide. Bear in mind that you can decide for each query to set the cache to active or inactive, and to use the memory or use flat file or the cluster table.

So we’ll go to this next slide. There is a matrix giving you some aspects you may take into consideration when deciding for a single query or your entire system which kind of caching option to use. What is important is certainly the frequency of changes of data. Like if you, for example, load every five minutes to an InfoProvider, the caching will not be that efficient because invalidations will take place frequently. Also, certainly the amount of active users and of query navigations that are performed in your system, the amount of different queries.

Remember that the OLAP cache is dependent on queries, so it’s certainly interesting whether you have many queries or you only have a few queries to determine how efficient the cache can be. Also, the number of ad hoc SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 23 queries is important. If you create a new query, this new query will certainly not be cached at first execution because you have just created it.

If you usually do ad hoc querying, the cache is also not that good.

The size of the result set may influence your decision on whether you use the memory or not for caching those query result sets. If you have very large result sets, it may make sense to immediately write them to a file or a cluster table. Also, the load on InfoProviders on database tables is interesting. If you have a high load on the database on the InfoProvider tables, it certainly makes sense to use one of those caching options.

Low query performance is, of course, another indicator. That’s what it’s all about: increasing the performance of queries. So if you have a low query performance you would certainly want to use this global OLAP cache. User groups assigned to application servers, that’s interesting to decide whether you want to use a cache across application servers or application server specific. If you assign your user groups to different application servers, user groups doing similar kind of reporting, it certainly makes sense to have the cache application server dependent. The speed of your I/O is certainly also interesting. Cache will, of course, have SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 24

less I/O impact than retrieving the data from an InfoCube or from

aggregate.

We’ll go to the next slide. There we have some links. More information

can be found in the online documentation. There will be a documentation

enhancement soon available in SAP Service Marketplace, especially about

the OLAP cache. There will be some conferences, BI conferences in

Berlin, and Tech Ed in Las Vegas and in Basel, and also the ASUG BITI

forum in Dallas.

That’s the end of the presentation. You now have time to ask questions.

Moderator Our first question is from Radu Drasta with Colgate-Palmolive. Please go

ahead.

R. Drasta Is there a method to keep a certain report in the cache or how would you

ensure to keep a given report, and perhaps some of it’s navigation steps

over a longer period of time? I’m thinking for the use of certain executive

reports that do not refresh that often, perhaps year-to-date summaries,

things like that. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 25

K. Werner If I get your question right, it’s about keeping query results for a long

time. You can keep them kind of forever if you use the swapping options

or if you use the cluster table and the flat file. They will never be removed

unless they’re invalidated, and they will certainly be invalidated if you

load new data. So if you have a management report, a very important one,

it will usually also have some current data in there and you will load new

data maybe daily or say at least monthly. Then the cache entry will

always be invalidated. But if it’s not invalidated, it will stay in the cluster

table or flat file if you use swapping or you immediately write it there.

R. Drasta Granted, let’s say that they only change monthly. Let’s say that the cache

is filling up and this report, since it hasn’t been refreshed, so perhaps it

isn’t run that often as the other ones, may be getting at the end of queue

and the algorithm would throw it out of the cache. In that situation should

we set up the reporting agent that runs this all the time, or would there be

some other way of making sure say we run this report, don’t ever take it

out of the cache until the data changes behind it? Is there such a way of

doing it?

K. Werner No, it’s not necessary. This swapping or this removing of the cache out of

the cache will only happen if you choose this first option, main memory SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 26

without swapping. With all other options for this particular query, all

other options will guarantee that it will never be removed from the OLAP

cache. Never.

R. Drasta I see. So unless the results change, it will never be swapped The answer

is there should be a select few queries like that in the set with that

parameter going to the OLAP cache?

K. Werner Yes. You can use several queries. You can use all queries like that. It

will not be removed. Only the cache size will, of course, maybe increase

unnecessarily. But for the important queries, you should make sure that

you use one of those options, two to four, and not the first one.

Moderator Ravi Lakkaraju with Joann Stores.

R. Lakkaraju Does the OLAP cache get invalidated with a cycling of the system, too?

K. Werner With a …?

R. Lakkaraju Say you cycled the system, shut it down, and bring it up for daily

maintenance. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 27

K. Werner If you shut it down and bring it back up again, the memory cache will be

certainly removed and the swapping is removed, but the file on the cluster

table will remain available.

R. Lakkaraju So is there a way for it to read through the file and bring it back into

cache? Is there a way to do that?

K. Werner No. There is no such option at the moment.

Moderator Andreas Peters, UBS.

A. Peters I have a question concerning the filling using the reporting agent. Is there

a difference if I fill this cache using web templates or if we did it the last

test using the print agent, which does not print any lines?

K. Werner It’s the same whatever you use. Only I think for the Web templates you’ll

have some more options like doing it by authorizations or control query.

I’m not sure about this, but there is no difference whatsoever. It only

depends on what kind of query you use, what kind of navigation step you SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 28

perform there, and the only important thing is that it is performed no

matter what you do with the data afterwards.

Whether you use it in batch printing or not use it in batch printing, or put it

into a Web template, put the data somewhere or put the HTML

somewhere. Independent of that, it’s only important that the query gets

executed in the way you would like to have it executed.

A. Peters The next question is if I create a drilldown, which has a lot of lines, let’s

say 64,000 lines, which is indicated in the RSRT, the query result is

incomplete due to the large number of lines. If I now create a reporting

agent job, which creates such a large number of lines, does that mean that

the cache is not completely filled will all the lines or is it there all in there

even if it’s not all printed?

K. Werner First of all, you should not have queries with 64,000 lines. Second, the

restriction comes from Microsoft Excel, not from SAP. If you don’t use

Excel, for example, batch printing, then there is no such restriction.

A. Peters The last question would be, if I have one query which runs and which

makes drilldown into characteristic one, and have a second drilldown into SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 29

characteristic two, now the second user comes. He first drills down into

characteristic one and immediately into characteristic two. Is the cache

used or not or do I have to create a set with both characteristics drilled

down?

K. Werner Let me introduce and hand over to Stefan Miller, who is the developer in

that area, who has just joined. Let me hand over to him for the answer.

S. Miller The cache would be used. There is only one problem. If they do it at the

same time, really at the same time, then it could be that the cache data has

to be calculated by each user. But if they do it with a time difference, it

will be used. Is that okay?

A. Peters Yes.

Moderator Steve Rudolph, Monsanto.

S. Rudolph Thank you for the conference call. My question is whether there is any

correlation between OLAP cache and BW statistics. Does it require or

make use of BW statistics to make decisions on use of the OLAP cache? SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 30

K. Werner At the moment, unfortunately, there is no direct relation indicating that the

OLAP cache has been used in the BW statistics. That’s still something

that we have to develop, that we have to do. There is an indication for it if

no data records are selected from the database and transferred to the

application server. You may know those fields QDBSEL and

QDBTRANS in the table RSDDSTAT or the corresponding InfoObjects

in the BW statistics indicating how many records have been read from the

database and how many records have been transferred to the application

server.

This will always be zero if the OLAP cache was used, but it may be zero if

the OLAP cache was not used, just because there was no data available,

but that should be an exceptional case. So usually if you look for those

entries with no records selected from the database, you will have those

entries that refer to usage of an OLAP cache.

S. Rudolph Conversely, it sounds like from what you said, there is no direct

requirement to have statistics active in order to use OLAP cache. Is that

correct? SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 31

K. Werner Yes. That’s certainly correct. There is no dependency of using BW

statistics on the OLAP cache. Maybe I misunderstood your question.

They are two totally different things. So statistics are always collected

independent of what kind of settings you have with your query, but the

thing at the moment is that you cannot see directly into statistics whether

the OLAP cache was used or not. Only by this guessing from QDBSEL

and QDBTRANS is equal to zero.

S. Rudolph I understand. Thank you.

Moderator Eloy Meira with Rich’s Foods.

E. Meira I have two questions. Is there a possibility to swap the cache into the

cluster table? I also have a second question. Is the cluster table faster for

caching or swapping that cache than the file?

K. Werner Your first question maybe refers to the existing cache and memory of

somehow getting it into the cluster table. Then the answer is no. But for

swapping you can choose the persistence mode cluster table or you can

choose in the query properties to immediately write to that cluster table all

the data that that query delivers. Maybe you can put your question in

another way so I understand what your question really is, the first one. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 32

E. Meira It’s just to ensure that if we decided, for example, to use buffing or

swapping technique for attaching the cache, the OLAP memory, that the

cluster table is going to be an efficient way of doing it. I will assume that

also that’s related to my second question, that the cluster will be faster on

the file, but that was my second question.

K. Werner I understand. So you can use the cluster table for swapping. That’s for

sure. You choose the persistent cluster table and you specify for your

queries the option main memory with swapping. That’s the first thing.

Performance really depends on many factors, like how fast is the

communication between your application servers or application servers

and server you have the file on. May be cluster table may be faster or it

may be slower. I think both are possible. Unfortunately, we have not

done any detailed measurements on that, but we will do so probably by the

end of the year, but I cannot give you a reliable answer right now. But it

will be published some time this year in the SAP Service Marketplace.

Moderator Troy Mosser, Molex. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 33

T. Mosser We are using this … the data-mining tool for populating an object from a

query. Will that use the cache …?

K. Werner Could you repeat what you are using? I didn’t get that part.

T. Mosser Yes. The transaction code is RSBNWB. It’s data mining. Basically, the

data-mining tool is calling the transaction for CRM analytics.

K. Werner This is a very good question. Unfortunately, I do not have the answer

because I’m not a CRM expert. So I don’t know what kind of interface

they’re using. If they use the APO interface, the answer is no. If they use

the normal OLAP processor, the answer is yes.

T. Mosser I’m not sure because sometimes you have both the options. Sometimes

you can do it … transaction or sometimes it uses the OLAP, because you

can use encryption aggregation and calculator … and so on. In that case it

has to go through the OLAP processor.

K. Werner Yes. In that case it would be cached. In the case where it directly access

the database, it will certainly not be cached. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 34

T. Mosser If a query has a very high OLAP time like in … caching will have,

because it will install data after calculation. Is that correct?

K. Werner That’s correct.

Moderator There is a question from Robby Lakkaraju with JoAnn Stores. Go ahead.

R. Lakkaraju When we run a query from …, you go into say ST02 or ST04 and start

monitoring that query, you’ll see it a lot of different SQLs being

performed at the database level. Now each one could be, let’s say, if the

main query was on a multi-cube, then each one of the sub-queries, so to

speak, would be at the InfoProvider level. So does the cache store the

results at the main query level or does it store it at the sub-query level?

K. Werner It has different levels so, first of all, it is totally dependent on the query

and the query, again, is totally dependent on the InfoProvider because the

query is always defined exactly on one InfoProvider. It may be a

MultiProvider, but it certainly is related to exactly one InfoProvider. The

cache entry is thus also directly related to an InfoProvider via the query

because the cache entry is dependent on the query. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 35

Within the query, there are different selections maybe, like restricted key

figures for different selections to the OLAP processors to the database.

These different selections are stored as separate entries on the lower level.

If you remember that slide, we have the queries. Then we have

hierarchies and variables, and then we have the selections, currency

conversions, and so on. So always exactly related to the InfoProvider the

query is defined on, but different selections on a lower level of that

InfoProvider.

R. Lakkaraju Let’s say my query contains a non-cumulative key figure as one of the key

figures. I’m reporting for a certain week, but when I actually run that

query and I look at the SQL statements that are being generated with, let’s

say, ST05 traces or something, I will see that it’s actually going back and

calculating the non-cumulative based on its corresponding cumulative

delta values.

So even though my query contains only the non-cumulative key figure in

the results set, the sub-queries behind the scenes has actually gone ahead

and calculated the non-cumulative values based on its corresponding

deltas from the cumulatives, and then posted in the result sets. Does the SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 36

cache contain the non-cumulative calculated value or does the cache

contain the delta sets from the cumulatives?

K. Werner It contains calculated non-cumulative value.

Moderator Richard Oxley, Kenakore.

R. Oxley My question concerns the shared memory segment, and ST02 shows what

is using in that shared segment. What other functionality uses that shared

memory segment, other than the OLAP cache?

K. Werner At the moment in the BW system, I think nothing. No other component is

currently using it, but there will probably be in the future, so that’s why

we have prepared already this number, how many percent of the segment

is used by the OLAP cache. That will usually be 100% now, but in the

future it will be lower than 100%. So there will be other components

coming in.

Moderator Walter Froehlicher with IBM.

W. Froehlicher I have a question regarding free characteristics. … we have about a

couple free characteristics in there and we want to give the user, the SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 37

community, give the community the rate that it was obviously cache

independent major characteristic it drills into. Could we achieve it by

running the reporting agent by having or expanding all the characteristics

it runs, and would then the cache be used independent of which

combination of those characteristics they would select?

K. Werner Yes. The developer looks a little suspicious here, so I may wait. Just a

moment and let me just clarify it. The answer is yes.

W. Froehlicher I have a second question; it’s the second to last one actually. It’s

regarding this play … noticed it today. We actually run a pre-calculate

query, which could drilldown in a characteristic, which has to be …

attached. Now the user reperforms or re-executes the same query, the

same read on the cache actually is considered, but now if the user then

inactivates the display hierarchy, the community … database and it’s from

the cache.

K. Werner That’s correct. You remember this second level? The first level of the

global cache structure was a query. The next level was hierarchy and was

referred to presentation hierarchies or display hierarchies and variables. If SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 38

this key is wrong, the presentation hierarchy is no longer available; the

cache entry will not be used. That’s correct.

W. Froehlicher … data would be somewhere in the cache memory of it?

K. Werner No. It’s summarized up to the presentation hierarchy level basically, and

that’s why this is a key of this structure.

Moderator Lonnie Luehmann with Nike.

L. Luehmann I have two brief questions. The first one was a clarification on the

information on slide 25 about the recommendations. You mentioned 80%.

How should I apply that to determining the size of the global cache that

we would use here. We have a CIDB and three application servers in our

production environment. How do I apply that to arrive at the efficient

definition for the global cache size?

K. Werner I would start out with this values given here for every application server

basically, and then also maybe take into consideration what is told on the

next slide, where they have a special situation with maybe a lot of ad hoc

querying or whatever. Then watch the size of the cache. If the size is SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 39

much smaller than what you really need, then you can decrease those

parameters. If it is bigger, if there is a lot of swapping going on, you may

want to increase it. Start with the current recommendations given on that

slide and watch those numbers, like percentage of usage and ST02 and all

this kind of stuff.

L. Luehmann One other quick question. Is it possible to cache data from a remote cube?

K. Werner Yes, it is. There is a validity period you can specify here for the queries.

You can specify this in transaction SPRO, where you can also set

InfoProvider defaults like the read mode, you may know, and others, also

the cache mode. Additionally, for remote cube there will be a validity

period, I think in seconds, where you can specify how long they should be

valid because, of course, you can never know when the underlying data

structure changes in the remote system. So it’s just a value you have to

specify yourself, and you have to be aware of the fact that the data may be

a little outdated say, for example, by five minutes if you specify 300

seconds.

Moderator Next, Radu Drasta, Colgate-Palmolive. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 40

R. Drasta I have another question regarding the parameters of the basis level. There

is a buffer size, I understand, that’s in your recommendation. That’s the

100-megabyte?

K. Werner Correct.

R. Drasta The number of objects, is that number of queries or number of all those

different objects?

K. Werner It’s a number of all entries. Not the number of queries, but the number of

all entries of all selections, of everything what you can see as the lowest

level item in the query monitor. So you may also want to increase this

size; that’s correct. That’s one thing I forgot to mention, so you may also

want to increase from the 2,000 default to some higher level because that

may be the limiting factor.

R. Drasta There are all by application servers as I understand?

K. Werner Yes. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 41

R. Drasta The last one is the estimated size of the largest object. Again, that could

be like a result set, could be like a data package. Right?

K. Werner Yes. But at the moment this parameter is not really used for our purposes,

so you can ignore this parameter at the moment in our discussion here

about the global OLAP cache.

R. Drasta I’m sorry. I don’t understand.

K. Werner This parameter’s not used at the moment.

R. Drasta The large object size?

K. Werner Yes. Has no meaning for our OLAP cache here.

Moderator Walter Froehlicher, IBM.

W. Froehlicher Let’s assume we build a query with a structure containing various

selections, for instance, with restricted key figures and we perform

drilldowns after a filter, so filter and drilldown. What we observe now is

that every time everything is selected for the entire query. Is that correct

or is that not the case? If that is the case, then we can just do one filter and SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 42

drilldown, and store the data for all structure elements in the cache with

that.

K. Werner We have some problems understanding this question. Is what you’re

saying is if you filter?

W. Froehlicher Filter and drilldown.

K. Werner But then you say the filter is kind of ignored in the cache.

W. Froehlicher Yes. I would say from what we have observed from the measurements on

how long it takes to select it, that it doesn’t matter on which row I filter

and drilldown. It always takes the same amount of time to execute the

query, and so also to fill the cache. So I assume that in the background we

do not filter on a specific selection, but we do a drilldown for all the

members of the structure, and just display at the very end the one element

of the structure, which is filtered on which we have put … the filter.

K. Werner But what you say is about filling the cache. Filling the

cache is not really a factor in the overall query performance if you don’t

use the cache, but you read from some underlying data structure. So SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 43

filling of the cache you wouldn’t see much difference there, depending on

the results that are written to the OLAP cache. Otherwise, we would

really be in trouble and the OLAP cache would ruin our query

performance.

So filling the cache is not a performance issue here and it will only buffer

the data that is really retrieved. So if you have a filter in that query, it will

not retrieve any additional data and write it to the OLAP cache. That will

be very unusual. Did I misunderstand your question?

W. Froehlicher … happening for let’s just say if you do a navigation on a query or right

now … say filter and drilldown to. It seems that in a structure it does in

the background the selection, the retrieving of the data out of whatever for

all the elements of the structure. It’s that drilldown and not just for a

specific selection, as you would assume since you were doing a filter and

drilldown. It should be much faster to do a filter and drilldown on a

specific row of the structure than it is to do it on all elements.

K. Werner I absolutely agree, but this is not a problem of the OLAP cache. This

would be a problem of the query execution. And if that is the case, if that

is really true and if you can certainly have a look at the database statement SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 44

that is handed down to the database, if the OLAP cache is not used, then

please open an OSS message and we have a severe problem there. That

would be important to know, but that’s not a problem whatsoever of the

OLAP cache. That would be a problem of a query execution and query

performance.

W. Froehlicher In relation to the OLAP cache, if we want to … opportunity to do it, we

just have to do one of those and not for every specific filter drilled onto it.

So that’s why I asked the question there.

K. Werner I should hope no. I should hope you’re wrong about that. If you’re right,

please do open an OSS message.

Moderator We have no further questions at this time.

O. Mayer Since we have no further questions, I’d like to thank everybody for dialing

in today and taking the time out to attend the call. Of course, many thanks

go to Klaus for putting this presentation together and for Stefan for

dropping in and helping with the question and answer session. So, again,

I’d like to thank everybody for attending today’s call. Then we’ll wrap

this call up until two weeks from now. SAP AMERICA Host: Margaret Anderson August 7, 2003/10:00 a.m. CDT Page 45

Moderator This does conclude your teleconference for today. Thank you for your

participation. You may now disconnect.