cancel
Showing results for 
Search instead for 
Did you mean: 

Number range buffer.

Former Member
0 Kudos

Hello All,

My questions is on Number range buffer.

Can any 1 please explain me what exciatly Number range buffer means... and why excialty its needed....

also what it contains and how it will improve the system performance

I read the help section but could not understand much.

Regards,

Ravi

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hello Ravi,

The number range buffer is used to increase performance when assigning numbers. Instead of fetching the numbers each time from the database, a single access to the buffer suffices. Only when the buffer is empty, is it refilled from the database (table NRIV).

Use of the buffer has the following benefits:

· Accessing the main memory is a thousand times quicker than accessing the database. Speed is particularly important for applications that assign numbers frequently.

· Database accesses are always subject to the database transaction mechanism. Once an application has assigned a number for one user, a second user cannot assign a number until the first user has executed a commit operation on the database. The application blocks further assignment, and the second user has to wait, until the commit has been executed.

· The number range buffer can also prevent deadlock situations, which may arise from assigning different numbers in a different order.

as per http://help.sap.com/saphelp_nw04/helpdata/en/7b/6eb2aa7aed44ea92ebb969e03081fb/frameset.htm

Rohit

Former Member
0 Kudos

Hi Rohit,

I had read that help section before.

But here my main doubt is on below lines

"Once an application has assigned a number for one user, a second user cannot assign a number until the first user has executed a commit operation on the database. The application blocks further assignment, and the second user has to wait, until the commit has been executed."

Above its telling assigned a number for a user, Y a number is assigned to a user.

what excialty that number will do and what that number will contain. That's what am not getting.

Also it says second user has to wait, until the commit has been executed y is that. will there not be any other numbers available to assign.

please help me to know the concept as am having some performance issues with our system.

Regards,

Ravi

Former Member
0 Kudos

There is something called number range defined in your system

now the numbers are generated from that number range one by one in sequence

so suppose if a first user does something due to which a number is assigned to him and suppose he doesnt commit and simultaneously 2 nd user also does something and the next number is assigned to him and the 2nd user commits

so we will have a mismatch here,as second user committed and the first one didnt,we will have a number missing

so for that purpose,2nd user is not assigned the number until the first user commits

Usually the number assignment does not take longer than 50 microseconds

Hope this helps

Rohit

Former Member
0 Kudos

Thanks for the information Rohit.

So can i tell that for each and every process that's going to be carried out in a system a number is going to be assigned.

And coming to NRIV table. What will be there in this table. Have read like if the buffer is full and number range is not available then the numbers will be fetched from NRIV table.

can you please share information on NRIV table(any links related NRIV in help section would be helpful)

Former Member
0 Kudos

Hello Ravi,

Not for every process a number is generated.Number is generated say in case of sales order,when it is generated a number is generated

well Table NRIV contains the actual number ranges in the system,you can see the contents through SE11 or SE16

we have something call number range buffers,so when that buffer gets full and there is a transaction that required a number to be generated,it looks in buffers and if it not there it goes to table NRIV in the database and fetches it

This is how the performnace is affected,there for we should make sure that there are less swaps in the system by increasing the size of number range buffer

Refer to http://saptechsolutions.com/pdf/SDDocumentNumberRangeEnhancements.pdf

will be useful

Rohit

Former Member
0 Kudos

Thanks a lot Rohit for providing wonderful information.

Have a great day nd weekend.

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Rohit,

I did some investigation on the problem we had on our system Bcoz of Number range Buffer.

I looked at some SAP Notes, the 1 which was more close to our problem(Work Process accessing NRIV table directly, Bcoz of which system slowness is happening)was SAP Note 920234 - Mechanism to fill the number range buffer

In this note its specified like

If the first DIA starts to access the database directly, the problem usually spreads out.

There are two ways to avoid that,

before all, see that the number of DIA processes is greater than the sum of non-DIA processes.

- first, you set the parameter rdisp/rfc_min_wait_dia_wp to one third of the configured DIA processes and

- second to increase the parameter nobuf/max_attempts from the default 1200 to let's say 4800. The idea of that is to lessen the number of direct accesses to the database.

- third to increase to contents of the number range buffer for that specific number range object.

Here my doubt is on parameter rdisp/rfc_min_wait_dia_wp to one third of the configured DIA processes

the above parameter is Number of waiting dialog work processes, by configuring this parameter to to one third of the configured DIA processes, How can this improve the performance.

Other points in the note i have got them. But setting the the parameter rdisp/rfc_min_wait_dia_wp to one third of the configured DIA processes, how will this improve the performance.

Please share your views.

Regards,

Ravi

Edited by: Ravi Kumar on Apr 18, 2009 10:24 PM

Former Member
0 Kudos

Hello Ravi,

This is indeed a very good parameter to improve the performance of the system

rdisp/rfc_min_wait_dia_wp- This parameter is used to reserve a number of dialog work processes for dialog mode. It specifies the number of dialog work processes that should be kept free for dialog mode, thereby preventing that all processes are occupied by parallel RFCs.

so it keeps a minimum no of dialog processes free all the time whenever there are too many RFC processes running and hence there are free dialog processes for you to work upon

Rohit

Former Member
0 Kudos

Hi guys.. this thread has been such a huge help for me in getting to know the basics of number ranges.... i have the following questions...

o before all, see that the number of DIA processes is greater than the sum of non-DIA processes.

Current Values : abap/heap_area_dia = 2000000000 & abap/heap_area_nondia = 2000000000

New Values : abap/heap_area_dia = ?????????????? & abap/heap_area_nondia = ??????????????

o first, you set the parameter rdisp/rfc_min_wait_dia_wp to one third of the configured DIA processes

Current Values : rdisp/rfc_min_wait_dia_wp = 1

New Values : rdisp/rfc_min_wait_dia_wp = ????????