Table buffering - Invalidations vs Changes on ST10

Hello experts,
Could you please let us know what is the difference between the number of "Invalidations" and the number of "Changes" that are registered via ST10 transactions for each table?
We are interested to identify which tables should be unbuffered considering that these metrics hopefully could help us to take a decision, we would like to know what is the basic difference between each of them.
Thanks and best regards,

Hi Rodolfo,
interesting questions:
A change is a DML statement (INSERT, UPDATE, DELET, MODIFY).
A invalidation is flagging an entry (line, region, table) in the table buffer as invalid
because it has been changed.
I suggest to create you own tables (sng, gen, ful), buffer them and run some tests.
I don't know each and every detail  since i didn't tested everything here but here are some of my observations.
A change is counted in the DBI and is a (one) change statement. e.g.
INSERT from wa = 1 change
This will lead to 1 invaldiation PER REMOTE APPLICATION SERVER (the local one is updated with the  change hence has no invalidation).
As far as i know array statements are counted as a (one) change as well like:
INSERT ... from TABLE
One change would be the UPDATE SET ... .
These statements let to many invalidations in my test (nr. of records / regions to be changed multiplied with the nr. of remote application servers).
To make it more complicated:
we can have invalidations and no changes since:
R3trans or tp might change buffered tables (do invalidations) but record no change in the DBI.
or
if a projection view is changed the change is recorded in the DBI against the view but the the underlying tables
get invalidations as well (like the view) on the remote application servers.
Kind regards,
Hermann

Similar Messages

  • Table  buffering  Changes

    Expert,
    We want to Change the one table Table buffering  on from "Buffering Switched on" to "
    Buffering not allowed".
      we have to do the changes on our my DEV-QUA-> PRD Enviromment.
    Please let me know which transaction should I use to do the changes in Dev(ECC-700)system.
    Is it sm13. also please provide the steps to do that.
    Thanks
    Malai

    Dear Anil, Sunil & hari,
    Thank you very much for all quick response..
    Ok once I did a changes in SE11 as per you mentioned steps, Then a new transport wil be created right.
    I want to apply the same changes in all my three system enviroment. DEV->QEA->PRD>
    1. If we import the  (Created TR  at DEV) TR request from DEV to QUA using Stms-> Will it be updated to QUA system  as like Dev system.
    Thanks
    Malai

  • About table buffering

    hi experts,
                  Explain me what is table buffering.why we have to use this concept ?and under which circumstances we need to use this concept.and if not what will be the consequences.
    ragards,
    mani

    hi,
    You get the same in SAP help, but i dont know the link..
    SAP Buffering
    The SAP database interface enables storage of database tables in local buffers, i.e. the buffers reside locally on each application server of the system. Buffering is especially important in a client/server environment because the access time using the network is much greater than the access time to a locally buffered table.
    The flag Buffering allowed must be set in the ABAP/4 Dictionary in order that a table be buffered. The buffering type must also be maintained in the technical settings of the table. Setting the flag Buffering allowed alone does not cause the tables to be buffered!
    Whether or not it makes sense to buffer a table depends on the type of access to the table.
    The buffering type defines how the table should be buffered.
    There are the following 3 buffering types:
    X full buffering
    P single record (partial) buffering
    G generic buffering
    no entry no buffering
    A number of key fields between 1 and number of key fields -1 must be defined for generic buffering.
    X full buffering
    Full buffering
    With full buffering, either the complete table or none of the table is in the buffer. If a read access is made to a record, all records of the table are transferred to the buffer.
    When should you select full buffering?
    For tables up to 30 KB in size. If a table is accessed frequently, but all accesses are read accesses, this value can be exceeded.
    For larger tables where large numbers of records are frequently accessed. However, if the application program is able to formulate an extremely selective WHERE condition using a database index, it may be advisable to dispense with full buffering.
    For tables with frequent accesses to data not contained in the table. Since all records are contained in the buffer, a quick decision can be made as to whether or not the table contains a record for a specific key.
    When considering whether a table should be fully buffered, you should take three aspects into account: the size of the table, the number of read accesses, and the number of write accesses. Tables best suited to full buffering are small, frequently read, and rarely updated.
    P single record (partial) buffering
    Single-record buffering
    With this kind of buffering, only the records of a table which are actually accessed are loaded into the buffer.
    This kind of buffering requires less storage space in the buffer than full buffering. However, greater organization is necessary and considerably more database accesses are necessary for loading.
    If an as yet unbuffered record is accessed with SELECT SINGLE, a database access occurs to load the record. If the table does not contain a record for the specified key ('no record found'), this record is noted as nonexistent in the buffer. If a further attempt is made to access this record, a renewed database access can be avoided.
    When should single-record buffering be selected?
    For large tables where there are frequent single-record accesses (with SELECT SINGLE ...). The size of the records being accessed should be between 100-200 KB.
    For comparatively small tables for which the access range is large, it is normally advisable to opt for full buffering. Only one database access is required to load such a table for full buffering, whilst single-record buffering calls for a very large number of table accesses.
    Generic buffering
    In a read access to a record of a generically buffered table, all the records whose left-justified part of the key (generic area) corresponds are loaded into the buffer.
    If this type of buffering is selected, the generic area must be defined by specifying a number n of key fields. The first n key fields of the table then define the generic key.
    The number of key fields to be entered must lie between 1 and the number of key fields -1. For example, only values between 1 and 5 are permitted for a table with 6 key fields.
    When should generic buffering be selected?
    A table should be buffered generically if usually only certain areas of the table are required. The individual generic areas are treated like independent tables which are fully buffered. Please also read the text about full buffering.
    The generic key area should be selected so that the generic areas are not too small to prevent too may generic areas being produced. If there are only a few records per generic area, it is more efficient to use full buffering.
    Generic buffering only makes sense if the table is accessed by a specified generic key. If, when an access takes place, a field of the generic key is not supplied with a value, the buffer is ignored and the records are read directly from the database.
    Language-specific tables are an example of a good use of generic buffering (with the language key field as generic key area).
    Bypassing Buffer is related to the buffering settings in the technical
    details of a database table. These table buffers are available on every
    application server. SELECT statements on a buffered table use this table
    buffer in stead of processing the SQL request on the database. As a
    result, using table buffering leads to performance improvements, but
    only if:
    - the buffered table is small
    - the contents of the table doesn't change often.
    SAP uses table buffering for a lot of their customizing table.
    Bypassing Buffer means: skip the table buffer on the application server
    and process the sql-request on the database.
    The table buffers are automatically synchronized with changes in the
    database.  However, it takes some time for the database updated to be
    available in the table buffer. So if you want to be 100% sure that the
    data you read is up to date, you must use the option BYPASSING BUFFER.
    Please note that there are also SQL statements that implicitely perform
    a BYPASSING BUFFER, for example when using a table in a JOIN statement.
    regards,
    Prabhu
    reward if it is helpful.

  • Table to look for change documents for users

    Hi friends,
    Is there any standard table to look for change documents for a user?change document through SUIM does not give the correct log.
    Thanks for you support.

    Julius
    Looking at another of Tracy's other post (http://scn.sap.com/thread/3598947) she's trying to use ACL. Hence needing to know the tables to write joins/queries to hit tables within ACL
    I've seen ACL used and have had the fun experience of Auditors using Google to find tables to perform checks on without context of what has actually been implemented in their particular system.
    Regards
    Colleen

  • Version control: table modified date is changing but nothing seems to be modifying it! Why?

    I have a series of databases. They're mirrors of each other in structure, only the data inside them changes. There's a database for each customer. Each night I run a procedure that checks if anything has changed in the database since the previous run and
    e-mails me if it has. The reason for this was that an employee in the past was changing (and breaking) things so I wanted to track what was going on. Now, one of these databases is idle at the moment, in abeyance if you like, yet 1 table's modified date changes
    once a week! Table definition stays stable at the level I am recording it (code below) so why is the modified date changing? Could it be an index-defrag? But if so, why this table and none of the others or indeed its mirror databases? CHECKDB run every day
    and that's OK. Full backup done weekly. But again, why this 1 table? Nothing is even using the table at the moment! Code to get object definitions below.
    SET
    @command =
    INSERT INTO TblSETUP_DatabaseVersionControl
    SELECT
    + @database
    +
    ''' as DatabaseName
    +
    CAST(@datestamp
    as
    varchar(20))
    +
    ''' as SnapshotTime
    ,so.object_id as ObjectId
    ,so.[name] as ObjectName
    ,so.[type_desc] as ObjectType
    ,so.create_date as CreateDate
    ,so.modify_date as ModifiedDate
    ,CASE
    WHEN so.type = ''U''
    THEN tbl.TableDefinition
    WHEN so.type = ''SN''
    THEN ''CREATE SYNONYM ['' + ss.name + ''] FOR '' + ss.base_object_name
    ELSE sm.definition
    END as ObjectDefinition
    FROM '
    + @database
    +
    '.sys.objects so
    LEFT OUTER JOIN '
    + @database
    +
    '.sys.sql_modules sm
    ON so.object_id = sm.object_id
    LEFT OUTER JOIN (SELECT
    td.object_id
    ,SUBSTRING(td.TableDefintionRaw,1,LEN(td.TableDefintionRaw)-1) + '')'' as TableDefinition
    FROM (
    select
    so1.object_id
    ,(select
    CASE
    WHEN sc.column_id = 1
    THEN ''CREATE TABLE ['' + so.name + ''] ([''
       + sc.name + ''] [''
       + st.name + '']''
    + CASE WHEN st.name LIKE ''%char%'' THEN ''('' + CAST(sc.max_length as varchar(5)) + '')'' ELSE '''' END
    + CASE WHEN sc.is_nullable = 1 THEN '' NULL,'' ELSE '' NOT NULL,'' END
    ELSE ''['' + sc.name + ''] [''
    + st.name + '']''
    + CASE WHEN st.name LIKE ''%char%'' THEN ''('' + CAST(sc.max_length as varchar(5)) + '')'' ELSE '''' END
    + CASE WHEN sc.is_nullable = 1 THEN '' NULL,'' ELSE '' NOT NULL,'' END
    END
    from '
    + @database
    +
    '.sys.objects so
    inner join '
    + @database
    +
    '.sys.columns sc
    on so.object_id = sc.object_id
    inner join '
    + @database
    +
    '.sys.types st
    on sc.user_type_id = st.user_type_id
    where so.type = ''U''
    AND so.object_id = so1.object_id
    order by sc.column_id
    FOR XML PATH('''')) AS TableDefintionRaw
    from '
    + @database
    +
    '.sys.objects so1
    WHERE so1.type = ''U''
    group by so1.object_id) as td) as tbl
    ON so.object_id = tbl.object_id
    LEFT OUTER JOIN '
    + @database
    +
    '.sys.synonyms ss
    ON so.object_id = ss.object_id
    WHERE so.[type] IN(''P''  -- Stored procedures
      ,''V''  -- Views
      ,''U''  -- User table
      ,''SN'' -- Synonym
      ,''FN'' -- Function
    ORDER BY so.[type],so.name
    JCEH

    Incidentally, I remember the second reason I set all this up. I had a view that used to revert back to an old definition under SQL 2008. It was weird. More than 1 of us had gone in and "fixed it" and then it unfixed itself. It turned out the view had been
    renamed in the past. Each night I have a procedure that checks all views in the instance running sp_refreshview. Any errors are caught and e-mailed to me. It seems that the old definition was still stored somehow under the old name but with the same object
    id (there had been some corruption in the database when a drive in the RAID5 array became suspect  - picked up with CHECKDB, Windows and indeed the HP software didn't pick anything up). Although the database had been "fixed" this view switched back to
    the old definition each time sp_refreshview was run. Fix was to drop and re-create using new definition. Learnt the lesson though and now keep track of all main definitions in each instance.
    J
    JCEH

  • Which table contains - Customer Master Changes?

    Team,
    Which table contains - Customer Master Changes?
    Please be specific; For example:
    CDHDR:
    OBJECTCLAS ?
    CDPOS:
    BJECTCLAS?
    ABNAME
    ABKEY
    HNGIND
    Thanks

    Hi Naved,
    try this:
    CDHDR-OBJECTCLAS = 'DEBI'
    CDHDR-OBJECTID = customer no.
    CDPOS-OBJECTCLAS = 'DEBI'
    CDPOS-OBJECTID = customer no.
    CDPOS-CHANGENR = CDHDR-CHANGENR
    CDPOS-TABNAME = 'KNA1'
    CDPOS-TABKEY = sy-mandt + customer no. (key of table KNA1)
    CDPOS-FNAME = field modified
    CDPOS-CHNGIND = (U Update, I Insert, D Delete)
    Regards, Manuel
    PS: Please remember to reward points if the answer is useful.

  • Which table contains - FI Document Changes?

    Team,
    Which table contains - FI Document Changes?
    Please be specific; For example:
    CDHDR:
    OBJECTCLAS ?
    CDPOS:
    BJECTCLAS?
    ABNAME  
    ABKEY      
    HNGIND  
    Thanks

    Hello
    The OBJECTCLAS is BELEG.
    Use FM CHANGEDOCUMENT_READ_HEADERS
    with objectclass = 'BELEG'
         objectid  = (concatenate client + company code + doc no + fiscal year)
    Then loop at the header and use FM
      CHANGEDOCUMENT_READ_POSITIONS
    to get the CDPOS values
    Hope this helps
    Shounak
    Message was edited by: Shounak Mukherjee

  • Table that contains the change date for every cost element

    Hi everyone!
    Can anyone please help me find a table which contains the change date for every cost element?
    Thanks,Jess

    If you basically want to find out if anyone changed the cost element, you need to use transaction KA05 and enter the cost element and controlling area.
    This would actually bring you whatever field was changed and on double clicking give you the actual change and the date on which the change was made.
    Problem is this change date is actually the creation date of a change document which is in the table CDHDR.Its not like the change date is on any master tables.
    Hope this helps
    Deepa

  • In the Table Overflow can we change show link to + sign?

    In the Table Overflow can we change show link to + sign?

    I asked about this awhile ago on this form,
    Removing the words 'Show'/'Hide' from table detail disclosure
    Changing this is a ADF Faces skinning issue, so the JDeveloper forum would be your best best. I've always wanted to implement this, but I have never got around to it

  • Table for Function modules - Changed date & Changed by.

    Hi Experts,
    Help me to get Function module changed date & changed by.
    For programs we can get the mentained information in TABLE : TADIR.

    Function Modules change history can be retrieved from table TRDIR.
    Function Module stores a program Include in table TRDIR.
    The details of the Function Module can be found in Attributes-->general data tab in the Function Module.
    You need to pass the Include which correponds the FM.
    Hence you can find the Log changes.
    Hope this helps.
    Regards
    Vinayak

  • To know the table names that contains changed and old PO values.

    Dear All,
            Please let me on the table names that contains changed PO value and old PO value details for which I'll be grateful.
    Regards,
    S.Suresh

    Hello,
    Check the table CDHDR and CDPOS.
    Cheers,
    Vasanth
    Edited by: Vasanth M on Feb 18, 2008 12:08 PM

  • Table  which stores the changes on a object

    Hi,
    Could any one tell me a table which stores the changes done to an object ex:Master data info object.
    I want to know when an particular attribute added to the master data.
    Thanks in advance

    I am not sure what is the level of detail you are looking for.
    CDHDR might help.
    Arun

  • Table for exhange rate changed on

    Hi
        Table for exchange rate is TCURR. and where can i find the changes done and changed by.
    what is the table to find the "changed on" and "change
    thanks

    Hi Sameer,
    Pls check in the following tables:
    SE16n_cd_key and se16n_cd_data
    You can find the required info. in the above mentioned tables.
    Regards,
    Mohan.

  • Table buffering concepts

    Hi,
    what is the simple meaining if "invalidate" records in table buffering ?
    thanks
    b
    Moderator message: please find available information.
    Edited by: Thomas Zloch on Nov 13, 2011 1:29 PM

    Hi,
    what is the simple meaining if "invalidate" records in table buffering ?
    thanks
    b
    Moderator message: please find available information.
    Edited by: Thomas Zloch on Nov 13, 2011 1:29 PM

  • Find when table Authorization Group was changed

    Dear Experts,
    Kindly help me on finding this. Table T001B have standard Authorization group as FB31 but it has been changed to &NC& by some one. It means &NC& means there is no Authorization group assigned to the table. I need to find when it was changed. Do i have any ways to find it out? I checked with entering table name in CDPOS i didnt find any entry. Kindly help me out how to find who and when this table Authorization group was changed for table T001B.
    Thanks & Regards,
    Sathish

    Thanks Thomas,
    I check in that transaction it shows log only for 3 months. I dont see any changes to those table what i want may be this Authorization group change in done even older.
    Thanks for your reply.

Maybe you are looking for

  • Iphone in recovery mode, how can i make assure that my data will not erase

    firstly thanks for quick reply. sorry sir, i am confused in last line you wrote, " This will erase the phone but you will be given an option at the end to restore to an existing backup, if you have one." i did not understand last sentence - if i have

  • Agree to terms & conditions option in pdf form

    Hi, I'll start by giving you some background to the job. I have created a layout using inDesign CS5 and imported it into Acrobat Pro 9. I have then used 'form editing' to produce a form that can be filled in and the FDF data emailed back when a 'send

  • How do I disable "Temporarily avoiding bad connevtoon

    How can I disable Avoid Bad Connections? I'd rather not get the "Temporarily Avoiding bad connections" feature. Thank you. Solved! Go to Solution.

  • Rounding and displaying doubles

    How do you stop a double (eg 12646903) being displayed as 1.2646903E7? ??? . Lynda

  • Calling an standard program

    Hi all, I am coding an Z Program and in this Zprogram i have to call an Standard Program(RFFOUS_T) and after giving the Necessary input Manually in the first selection screen (1000)of the Standard program i have to return back to my Z program How can